0

下面的 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
4

3 回答 3

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
于 2010-11-16T16:57:04.470 回答
0

你的查询有问题,首先试试:

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

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

于 2010-11-16T16:58:15.690 回答
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).'"
';

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

于 2010-11-16T16:59:08.420 回答