PHP PDO选择名称中带有单引号的列


PHP PDO selecting columns with single quotes in their name

在phpmyadmin中,我可以通过SQL:运行

SELECT * FROM mytable WHERE `Bob's Stuff` > 1

但是,当我运行完全相同的查询时,一个php脚本:

$stmt->prepare("SELECT * FROM mytable WHERE `Bob's Stuff` > :int");
$stmt->bindValue(':int', $int);
$stmt->execute();

我得到这个错误:

致命错误:未捕获异常"PDOException",消息为'SQLSTATE[42000]:语法错误或访问冲突:1064您有SQL语法错误;查看与您的MySQL服务器版本中第10行":int AND Bob's Stuff>='1')"附近要使用的正确语法script.php:208堆栈跟踪:#0script.php(208):PDOStatement->execute()#1{main}抛出script.php第208行

如果将查询列更改为任何其他列名,则查询工作正常。

列名可以用撇号吗?

将列名也作为参数

$tableName = "`Bob''s Stuff`";
$stmt->prepare("SELECT * FROM mytable WHERE :tableName > :int");
$stmt->bindValue(':tableName', $tableName);
$stmt->bindValue(':int', $int);
$stmt->execute();

顺便说一下,一个建议是下次不要创建像Bob's Stuff这样的列。把它做成一个像BobStuff这样的单词。