在查询中尝试其他SET命令时出错

时间:2010-11-16 16:51:02

标签: php sql mysql mysql-error-1054

下面的MySQL查询效果很好。它将MySQL数据库中的字段votes_up替换为变量$votes_up的任何值。

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

但是,当我尝试添加第二个条件同时将名为flag1的字段替换为名为$uflag的变量的值时,我收到一条错误消息。我试图用于此的查询如下。如果Unknown column 'admin' in 'field list'的值为“admin”,则会显示错误消息$uflag。此外,$uflag的值未放入数据库。我有什么想法得到这个错误?

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您在查询中遇到问题,首先尝试:

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

如果不起作用,请尝试打印查询并在控制台中运行。

答案 2 :(得分: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).'"
';

它与其他变量一起工作的原因是,不需要数字引号,但是会打开一个巨大的安全漏洞。