请仔细阅读问题。“我的代码不起作用!!!”这不是通常的愚蠢行为 问题。
当我运行此代码时出现预期错误
try {
$sth = $dbh->prepare("SELECT id FROM users WHERE name INN(?,?) ");
$sth->execute(array("I'm","d'Artagnan"));
} catch (PDOException $e) {
echo $e->getMessage();
}
我收到此错误消息
您的 SQL 语法有错误...在第 1 行的 'INN('I\'m','d\'Artagnan')' 附近
但多年来我一直认为查询和数据是分开发送到服务器的,并且永远不会干扰。因此我有一些问题(尽管我怀疑有人得到答案......)
- 它从哪里得到如此熟悉的字符串表示 - 引用和转义?是专门报告错误还是实际查询的一部分?
- 它在现实中是如何工作的?它是否用数据替换占位符?
- 有没有办法获得整个查询,而不仅仅是一点点,用于调试目的?
更新
mysqli
按预期做:它抛出一个错误说near 'INN(?,?)'