синтаксическая ошибка в запросе

  • Автор темы Автор темы Sepuka
  • Дата начала Дата начала

Sepuka

Новичок
синтаксическая ошибка в запросе

имеем следующую функцию:
PHP:
foreach ($_POST as $n=>$v)
{
if (is_numeric(substr($n, 0, 1)))
{
$addres = explode ("-", $n); 
if (($addres[1] != "id") && ($addres[1] != "create"))
{
$change_records = "UPDATE `".$_POST['table']."` SET '".$addres[1]."'=$v WHERE `id`=".$addres[0];
print $change_records." ;<br>";
if (!mysql_query($change_records)) print "Запрос на изменение поля ".$addres[1]." на значение = ".$v." у пользователя с id ".$addres[0]." не был выполнен, ошибка ".mysql_error();
}
}
}
она проверяет все POST данные, выделяет те которые начинаются с цифры, из оставшихся разделяет их на 2 части стоящие по разные стороны "-" и создает запрос. Но не один из запросов не выполняется. А выходит следующее:
UPDATE `forum` SET 'visit'= WHERE `id`=4 ;
Запрос на изменение поля visit на значение = у пользователя с id 4 не был выполнен, ошибка 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 ''visit'= WHERE `id`=4' at line 1UPDATE `forum` SET 'login'=rfdf WHERE `id`=4 ;
Запрос на изменение поля login на значение = rfdf у пользователя с id 4 не был выполнен, ошибка 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 ''login'=rfdf WHERE `id`=4' at line 1UPDATE `forum` SET 'headline'=fdffd WHERE `id`=4 ;
хотя запрос, как мы видим, вроде правильный. не пойму где ошибка
 
UPDATE `forum` SET 'visit'= WHERE `id`=4 ;
И чему по твоему visit равен?


''login'=rfdf WHERE `id`=4'
Не те кавычки + rfdf в кавычки брать надо.


Блин, почитай про SELECT UPDATE и я тебе уже говорил ссылку на string


Ты что думаешь мы тут всю жизнь сидим и мечтаем искать у тебя опечатки?

Тебе четка сказали что тут синтактическая ошибка - вот и ищи ее.
 
phprus
Ему еще до этого далеко. На дебаг уже отправляли-)

Пусть вначале научится хоть какой-то код писать.

-~{}~ 20.01.07 22:47:

Тфу нет не отправляли. Сори перепутал ники.

тогда вот еще полезная ссылка
и я тебе уже говорил ссылку на string
-
hhtp://php.net/string
 
все, понял и сделал, спасибо огромное. а на счет дырявого кода это что вы имели введу? я понял что надо проверять все данные пришедшие с формы на определенные значения и экранировать спецсимволы, это я сделаю
 
Ё-маё, форматирование кода рулит.
Ё-маё, имя таблицы в $_POST
Ё-маё, не вовремя ты пытаешься перейти на работу с Базой Данных. Помоему для начала нужно научиться писать устойчивый код к файлам.
Так же прочитать про SQL injection(google.com тебе поможет)
 
Автор оригинала: cDLEON
Ё-маё, имя таблицы в $_POST
а каким образом передать имя таблицы если мы сразу не можем сказать что за таблица будет участвовать? а может ты имеешь ввиду что напрямую сразу нельзя? нужно проверить, экранировать спецсимволы... Так это понятно. А если нельзя передавать методами пост или гэт, то как передавать? Расскажи
 
Sepuka
Если имя таблици передается как пост или гет параметр, то это говорит о том, что система изначально неправильно спроектирована. В правильно спроектированной системе ситуации:
мы сразу не можем сказать что за таблица будет участвовать
быть не может.
 
ты имеешь ввиду что нам не просто нужно вставить имя таблицы, но перед этим проверить есть ли она у нас, например, искать ее среди некоторого списка разрешенных таблиц? и только потом вставлять?
 
Сверху