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

时间:2012-09-08 09:54:38

标签: php mysql sql pdo

在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服务器版本的正确语法在':int AND Bob's Stuff> ='1')附近使用'在第10行'   script.php:208堆栈跟踪:#0   script.php(208):抛出PDOStatement-> execute()#1 {main}   第208行的script.php

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

是否可以使用撇号的列名?

1 个答案:

答案 0 :(得分:0)

将该列名也作为参数

$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一样单词。