2010-11-16 4 views
0

Ниже приведенный ниже запрос MySQL работает так, как есть. Он заменяет поле votes_up в базе данных MySQL любым значением, имеющимся для переменной $votes_up.Ошибка при попытке выполнить дополнительную команду SET в запросе

UPDATE submission 
    SET votes_up = $votes_up 
WHERE submissionid = $id 

Однако, когда я пытаюсь добавить второе условие, которое будет одновременно заменить поле называется flag1 со значением переменной называется $uflag, я получаю сообщение об ошибке. Запрос, который я пытаюсь использовать для этого, приведен ниже. Сообщение об ошибке сообщает Unknown column 'admin' in 'field list', если значение $uflag является «admin». Кроме того, значение $uflag не вводится в базу данных. Любые идеи, почему я получаю эту ошибку?

UPDATE submission 
    SET votes_up = $votes_up, 
     flag1 = $uflag 
WHERE submissionid = $id 

ответ

3

Вы должны добавить кавычки в строку значений:

UPDATE submission 
SET votes_up = $votes_up, flag1 = $uflag 
WHERE submissionid = $id 

Должно быть:

UPDATE submission 
SET votes_up = $votes_up, flag1 = '$uflag' 
WHERE submissionid = $id 
0

У вас есть проблема в запросе, в первую очередь попробовать:

UPDATE submission SET votes_up = '$votes_up', flag1 = '$uflag' WHERE submissionid = $id 

Если это не сработает, попробуйте pr int запрос и запустить его в консоли.

0

Вы должны поставить кавычки ваших ценностей и избежать их:

$sql = ' 
    UPDATE submission 
    SET votes_up = "'.mysql_real_escape_string($votes_up).'", 
     flag1 = "'.mysql_real_escape_string($uflag).'" 
    WHERE submissionid = "'.mysql_real_escape_string($id).'" 
'; 

Причины, почему она работает с другими переменным, что для чисел не нужна цитаты, однако открытие огромной дыры в безопасности.

+0

код не помещает кавычки вокруг значений, поскольку вы просто конкатенируете строку с помощью функции (функций), вам все равно нужно добавить двойную кавычку следующим образом: flag1 = ".mysql_real_escape_string ($ uflag). ' " –

+0

Argh, был отвлечен. Ред. – AndreKR