在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:语法错误或访问冲突的未识别的异常'SQLSTATE42000: 1064您的MySQL语法中有一个错误;检查与MySQL服务器版本对应的手册,以获得在script.php:208堆栈跟踪:#0 script.php( 208 ):PDOStatement-> >= ( {main} )中抛入的script.php:208堆栈跟踪:#0 script.php (208):PDOStatement #1 {main}中使用的正确语法。
如果我将查询列更改为任何其他列名,则查询工作正常。
有可能有带撇号的列名吗?
发布于 2012-09-08 09:57:22
使那个列名也作为参数,
$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这样的单词。
https://stackoverflow.com/questions/12329733
复制相似问题