Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Ошибка в SQL запросе (
Форумы портала PHP.SU » » Вопросы новичков » Ошибка в SQL запросе (

Страниц (1): [1]
 

1. event - 11 Февраля, 2012 - 20:11:03 - перейти к сообщению
Привет, где я накосячил?
PHP:
скопировать код в буфер обмена
  1. function sqlesc($value) {
  2.         // Stripslashes
  3.    /*if (get_magic_quotes_gpc()) {
  4.            $value = stripslashes($value);
  5.    }*/
  6.    // Quote if not a number or a numeric string
  7.    if (!is_numeric($value)) {
  8.            $value = "'" . mysql_real_escape_string($value) . "'";
  9.    }
  10.    return $value;
  11. }
  12.  
  13. $result = sql_query("INSERT INTO persons (id, added, person_name, birthday, gender, additionally, owner, website) VALUES ($id, $added, " . sqlesc($person_name) . ", " . sqlesc($$person_birthday) . ", " . sqlesc($person_gender) . ", " . sqlesc($person_additionally) . ", " . sqlesc($CURUSER['id']) . ", " . sqlesc($person_website) . ")") or sqlerr(__FILE__, __LINE__);


Возвращает:
CODE (text):
скопировать код в буфер обмена
  1. Ошибка в SQL
  2. Ответ от сервера MySQL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 'Тестовый ............', '', 2, 'Тестовый ............Тестовый ............Тест' at line 1
  3.  
  4. в C:\AppServ\www\persons.php, линия 241
  5.  
  6. Запрос номер 6.
Огорчение
2. PATCH - 11 Февраля, 2012 - 20:15:54 - перейти к сообщению
CODE (html):
скопировать код в буфер обмена
  1. " . sqlesc($$person_birthday) . "
замени на
CODE (html):
скопировать код в буфер обмена
  1. " . sqlesc($person_birthday) . "
3. event - 11 Февраля, 2012 - 20:26:41 - перейти к сообщению
PATCH пишет:
$$

Сделал, теперь:
CODE (text):
скопировать код в буфер обмена
  1. Ошибка в SQL
  2. Ответ от сервера MySQL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 'ame person - * ame person - * ame person - * ame person - * ', '1923.06.07' at line 1
  3.  
  4. в C:\AppServ\www\persons.php, линия 241
  5.  
  6. Запрос номер 6.
4. PATCH - 11 Февраля, 2012 - 20:35:03 - перейти к сообщению
типы полей в студию.
5. event - 11 Февраля, 2012 - 20:49:54 - перейти к сообщению
[quote=PATCH][/quote]

`id` int(10) unsigned NOT NULL auto_increment,
`added` datetime NOT NULL default '0000-00-00 00:00:00',
`person_name` varchar(40) NOT NULL,
`image1` text NOT NULL,
`image2` text NOT NULL,
`image3` text NOT NULL,
`image4` text NOT NULL,
`birthday` date default '0000-00-00',
`gender` enum('1','2','3') NOT NULL default '1',
`biography` text NOT NULL,
`additionally` text NOT NULL,
`website` varchar(50) NOT NULL default '',
`owner` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`person_name`),
KEY `added` (`added`)
6. OrmaJever - 11 Февраля, 2012 - 21:14:54 - перейти к сообщению
Просто значения нужно брать в кавычки.
PHP:
скопировать код в буфер обмена
  1. $result = sql_query("INSERT INTO persons (id, added, person_name, birthday, gender, additionally, owner, website) VALUES ('$id', '$added', '" . sqlesc($person_name) . "', '" . sqlesc($person_birthday) . "', '" . sqlesc($person_gender) . "', '" . sqlesc($person_additionally) . "', '" . sqlesc($CURUSER['id']) . "', '" . sqlesc($person_website) . "')") or sqlerr(__FILE__, __LINE__);

вроде везьде поставил
7. event - 11 Февраля, 2012 - 21:22:57 - перейти к сообщению
OrmaJever пишет:
Просто значения нужно брать в кавычки.
PHP:
скопировать код в буфер обмена

$result = sql_query("INSERT INTO persons (id, added, person_name, birthday, gender, additionally, owner, website) VALUES ('$id', '$added', '" . sqlesc($person_name) . "', '" . sqlesc($person_birthday) . "', '" . sqlesc($person_gender) . "', '" . sqlesc($person_additionally) . "', '" . sqlesc($CURUSER['id']) . "', '" . sqlesc($person_website) . "')") or sqlerr(__FILE__, __LINE__);


вроде везьде поставил


Ничего не изменилось:

Ошибка в SQL
Ответ от сервера MySQL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Name person - *'', ''1922.04.03'', '2', ''Name person - *Name person - *Name per' at line 1

в C:\AppServ\www\persons.php, линия 241

Запрос номер 6.
(Добавление)
Сделал так:
PHP:
скопировать код в буфер обмена
  1. $result =  sql_query("INSERT INTO persons (id, added, name, birthday, gender, biography, additionally, website, owner) VALUES (".implode(",",array_map("sqlesc",array($id, $added, $person_name, $person_birthday, $person_gender, $person_biography, $person_additionally, $person_website, $CURUSER['id'] ))).")");


вроде без ошибок. Улыбка
8. OrmaJever - 11 Февраля, 2012 - 22:49:24 - перейти к сообщению
ой, я не заметил что в функции уже кавычки ставятся
9. PATCH - 11 Февраля, 2012 - 22:52:27 - перейти к сообщению
OrmaJever пишет:
ой, я не заметил что в функции уже кавычки ставятся
ставятся если строка не число ) а если число то кавычки не ставятся) у него в функции.

 

Powered by ExBB FM 1.0 RC1