|
|
|
| делаю запрос:
$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
подскажите, в чем ошибка?запрос вроде правильно составлен.
заранее благодарен. | |
|
|
|
|
|
|
|
для: Spenser
(14.02.2007 в 17:16)
| | Первое слово values - лишнее.
Ну и стандартный бардак с экранировангием входных параметров. | |
|
|
|
|
|
|
|
для: Trianon
(14.02.2007 в 17:25)
| | Насчет стандартного бардака с экранированием...Подскажите,в каких случаях необходимо использовать одинарные кавычки.Ну один вариант понятно,когда WHERE id=$a(ведь вполне может случиться $a="id") или SET name=hello(вдруг есть столбец с именем hello)-т.е. чтобы не получилось совпадения текста с именем столбца,а в каких еще случаях ? | |
|
|
|
|
|
|
|
для: Ralph
(14.02.2007 в 23:53)
| | >Насчет стандартного бардака с экранированием...
>Подскажите,в каких случаях необходимо использовать одинарные кавычки.
Когда Вы указываете числовые параметры (целые, вещественные числа), апострофы не требуются.
Когда Вы указываете данные строковых , календарных, временных типов, значения перечислений, элементы множеств - апострофы нужны, а спецсимволы среди данных внутри них должны быть заэкранированы функцией mysql_escape_string().
>Ну один вариант понятно,когда WHERE id=$a(ведь вполне может случиться $a="id") или SET name=hello(вдруг есть столбец с именем hello)-т.е. чтобы не получилось совпадения текста с именем столбца,а в каких еще случаях ?
Текст Вы экранируете и окружаете 'апострофами', а имя столбца или имя таблицы пишите в лоб. Чтобы имя не конфликтовало с зарезервированными словами языка SQL, его можно заключать в `обратные косые кавычки`
Бардак заключался не в этом.... | |
|
|
|
|
|
|
|
для: Trianon
(14.02.2007 в 17:25)
| | И еще к синтаксису MySQL и PHP...Необходимы ли скобки в выражении типа (a*b+c)>=0 или интерпретатор сам поймет,что сравнивать с нулем нужно не c,а все выражение ? | |
|
|
|
|
|
|
|
для: Ralph
(14.02.2007 в 23:59)
| | не нужны. Операции сравнения имеют приоритет ниже чем арифметические. | |
|
|
|
|
|
|
|
для: Ralph
(14.02.2007 в 23:59)
| | . | |
|
|
|
|
|
|
|
для: Trianon
(15.02.2007 в 09:46)
| | >бардак заключался не в этом...
Я знаю,просто не хотелось лишнюю тему создавать :-) Спасибо за инфу,о приоритете между логическими операциями,между арифметическими знал,а вот по отношению к друг другу-нет :-( | |
|
|
|