下面的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
答案 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).'"
';
它与其他变量一起工作的原因是,不需要数字引号,但是会打开一个巨大的安全漏洞。