Ошибка при попытке дополнительной команды SET в запросе - PullRequest
0 голосов
/ 16 ноября 2010

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

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 ]

3 голосов
/ 16 ноября 2010

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

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 голосов
/ 16 ноября 2010

Вы должны помещать кавычки вокруг ваших значений и избегать их:

$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 голосов
/ 16 ноября 2010

У вас есть проблема в запросе, прежде всего попробуйте:

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

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

...