【发布时间】:2011-04-13 05:37:36
【问题描述】:
请仔细阅读问题。 “我的代码不起作用!!!”这不是通常的愚蠢行为问题。
当我运行此代码时出现预期错误
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(?,?)'
【问题讨论】:
-
@DrColossos 有答案,@Cassy 有解释。
标签: php pdo parameterized-query