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

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 ;
хотя запрос, как мы видим, вроде правильный. не пойму где ошибка
 

HraKK

Мудак
Команда форума
UPDATE `forum` SET 'visit'= WHERE `id`=4 ;
И чему по твоему visit равен?


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


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


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

Тебе четка сказали что тут синтактическая ошибка - вот и ищи ее.
 

HraKK

Мудак
Команда форума
phprus
Ему еще до этого далеко. На дебаг уже отправляли-)

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

-~{}~ 20.01.07 22:47:

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

тогда вот еще полезная ссылка
и я тебе уже говорил ссылку на string
-
hhtp://php.net/string
 

Sepuka

Новичок
все, понял и сделал, спасибо огромное. а на счет дырявого кода это что вы имели введу? я понял что надо проверять все данные пришедшие с формы на определенные значения и экранировать спецсимволы, это я сделаю
 

cDLEON

Онанист РНРСlub
Ё-маё, форматирование кода рулит.
Ё-маё, имя таблицы в $_POST
Ё-маё, не вовремя ты пытаешься перейти на работу с Базой Данных. Помоему для начала нужно научиться писать устойчивый код к файлам.
Так же прочитать про SQL injection(google.com тебе поможет)
 

Sepuka

Новичок
Автор оригинала: cDLEON
Ё-маё, имя таблицы в $_POST
а каким образом передать имя таблицы если мы сразу не можем сказать что за таблица будет участвовать? а может ты имеешь ввиду что напрямую сразу нельзя? нужно проверить, экранировать спецсимволы... Так это понятно. А если нельзя передавать методами пост или гэт, то как передавать? Расскажи
 

phprus

Moderator
Команда форума
Sepuka
Если имя таблици передается как пост или гет параметр, то это говорит о том, что система изначально неправильно спроектирована. В правильно спроектированной системе ситуации:
мы сразу не можем сказать что за таблица будет участвовать
быть не может.
 

Sepuka

Новичок
ты имеешь ввиду что нам не просто нужно вставить имя таблицы, но перед этим проверить есть ли она у нас, например, искать ее среди некоторого списка разрешенных таблиц? и только потом вставлять?
 
Сверху