在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
如果我将查询列更改为任何其他列名称,则查询可以正常工作。
是否可以使用撇号的列名?
答案 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
一样单词。