此MySQL查询的语法可能有误

时间:2010-11-24 10:32:33

标签: php mysql

这个MySQL查询的语法有问题吗?

提前致谢,

约翰

$ttquery = sprintf("Update login SET ".$row['ttemail']." = '1' WHERE username = ".$row['username'].""); 

编辑:好的,根据Pekka的要求,我回复了实际的查询值,这给了我一些想法。现在我正在使用它:

$ttquery = "Update login SET ttemail = 1 WHERE username = ".$row['username']."";

我收到此错误:'where子句'中的未知列'admin'。 “admin”是第一个符合我想要运行此查询的条件的用户名...它不是字段的名称。关于我为什么会收到错误的任何想法?

编辑:如果有帮助,这是MySQL回显的MySQL查询:

Update login SET ttemail = 1 WHERE username = admin

5 个答案:

答案 0 :(得分:3)

您可能需要围绕用户名

的单引号
$ttquery = "Update login SET ".$row['ttemail']." = '1' WHERE username = '".$row['username']."'";

如果您使用sprintf,则可以:

$ttquery = sprintf("Update login SET %1$s = '1' WHERE username = '%2$s'", $row['ttemail'],$row['username']);

答案 1 :(得分:1)

Update login SET ttemail = 1 WHERE username = admin

在SQL中,字符串由单引号括起,表/列名称不加引号。您需要修复PHP代码,以便生成:

Update login SET ttemail = 1 WHERE username = 'admin'

尝试确保在敲击PHP之前先了解基本SQL; - )

答案 2 :(得分:0)

试试这个

$ttquery = sprintf("Update login SET ".$row['ttemail']." = '1' WHERE username = '" . $row['username'] ."'"

即,用户名='[你的价值]'

答案 3 :(得分:0)

这应该有效:

$ttquery = "Update login SET ".$row['ttemail']." = '1' WHERE username = '".$row['username']."'";

答案 4 :(得分:0)

关于sql注射要小心。 另外,如果您实际使用它,为什么要调用sprintf()