PHP PDO致命错误

时间:2011-06-22 07:01:20

标签: php mysql pdo

我有以下查询:

$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行

有什么想法吗?

2 个答案:

答案 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,使用预准备语句可能会有所帮助。虽然对于一次性查询来说有点慢,但它增加了安全性并处理了所有必要的转义,因此您不会遇到这些问题。