我有以下查询:
$sql = "UPDATE db.users SET $str WHERE users.{$this->row} = {$this->value} LIMIT 1";
哪个回声出来了:
UPDATE db.users SET username=testUser, gid=3 WHERE users.username = mmiller LIMIT 1
然而,当我这样做时:
$count = Db::init()->exec($sql);
我明白了:
Fatal error: Uncaught exception 'PDOException' with message
'SQLSTATE [42S22]:未找到列: 1054未知栏'mmiller'in 'where clause''in /class.php:185 堆栈跟踪:#0 /class.php(185): PDO-> exec('UPDATE db ...')#1 /class.php(194): 用户 - >修改('用户名','gid', 'testUser','3')#2 {main}投入 /class.php 在第185行
有什么想法吗?
答案 0 :(得分:5)
您需要使用"
UPDATE db.users SET username="testUser", gid="3" WHERE users.username = "mmiller" LIMIT 1
确保你的回音告诉你。你可以使用'
当然,无论你的船是什么漂浮:)
答案 1 :(得分:2)
您需要在字符串值周围使用引号;
$sql = "UPDATE db.users SET $str WHERE users.{$this->row} = '{$this->value}' LIMIT 1";
看到您已经在使用PDO,使用预准备语句可能会有所帮助。虽然对于一次性查询来说有点慢,但它增加了安全性并处理了所有必要的转义,因此您不会遇到这些问题。