Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум 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
 
 автор: Spenser   (14.02.2007 в 17:16)   письмо автору
 
 

делаю запрос:

$query = "INSERT INTO users VALUES (login, name, password, email)
            VALUES ('$_POST[login]','$_POST[name]','".md5($_POST['pass'])."','$_POST[email]')";

выдает ошибку : 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 'VALUES ('sadf','gjsh','4eae18cf9e54a0f62b44176d074cbe2f','sadf@sdf.ru')' at line 2
подскажите, в чем ошибка?запрос вроде правильно составлен.
заранее благодарен.

   
 
 автор: Trianon   (14.02.2007 в 17:25)   письмо автору
 
   для: Spenser   (14.02.2007 в 17:16)
 

Первое слово values - лишнее.
Ну и стандартный бардак с экранировангием входных параметров.

   
 
 автор: Ralph   (14.02.2007 в 23:53)   письмо автору
 
   для: Trianon   (14.02.2007 в 17:25)
 

Насчет стандартного бардака с экранированием...Подскажите,в каких случаях необходимо использовать одинарные кавычки.Ну один вариант понятно,когда WHERE id=$a(ведь вполне может случиться $a="id") или SET name=hello(вдруг есть столбец с именем hello)-т.е. чтобы не получилось совпадения текста с именем столбца,а в каких еще случаях ?

   
 
 автор: Trianon   (15.02.2007 в 09:45)   письмо автору
 
   для: Ralph   (14.02.2007 в 23:53)
 

>Насчет стандартного бардака с экранированием...
>Подскажите,в каких случаях необходимо использовать одинарные кавычки.
Когда Вы указываете числовые параметры (целые, вещественные числа), апострофы не требуются.
Когда Вы указываете данные строковых , календарных, временных типов, значения перечислений, элементы множеств - апострофы нужны, а спецсимволы среди данных внутри них должны быть заэкранированы функцией mysql_escape_string().

>Ну один вариант понятно,когда WHERE id=$a(ведь вполне может случиться $a="id") или SET name=hello(вдруг есть столбец с именем hello)-т.е. чтобы не получилось совпадения текста с именем столбца,а в каких еще случаях ?

Текст Вы экранируете и окружаете 'апострофами', а имя столбца или имя таблицы пишите в лоб. Чтобы имя не конфликтовало с зарезервированными словами языка SQL, его можно заключать в `обратные косые кавычки`

Бардак заключался не в этом....

   
 
 автор: Ralph   (14.02.2007 в 23:59)   письмо автору
 
   для: Trianon   (14.02.2007 в 17:25)
 

И еще к синтаксису MySQL и PHP...Необходимы ли скобки в выражении типа (a*b+c)>=0 или интерпретатор сам поймет,что сравнивать с нулем нужно не c,а все выражение ?

   
 
 автор: Trianon   (15.02.2007 в 09:46)   письмо автору
 
   для: Ralph   (14.02.2007 в 23:59)
 

не нужны. Операции сравнения имеют приоритет ниже чем арифметические.

   
 
 автор: Trianon   (15.02.2007 в 09:46)   письмо автору
 
   для: Ralph   (14.02.2007 в 23:59)
 

.

   
 
 автор: Ralph   (15.02.2007 в 10:36)   письмо автору
 
   для: Trianon   (15.02.2007 в 09:46)
 

>бардак заключался не в этом...
Я знаю,просто не хотелось лишнюю тему создавать :-) Спасибо за инфу,о приоритете между логическими операциями,между арифметическими знал,а вот по отношению к друг другу-нет :-(

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования