请仔细阅读问题。这不是平常愚蠢的“我的代码不起作用!!!”题。PDO参数化查询的工作方式
当我运行此代码预期错误
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语法...近 'INN(' 有一个错误I \ 'm','d'Artagnan')'在第1行
但我想多年来,查询和数据被单独发送到服务器,干扰。因此,我有一些问题(虽然我怀疑有人得到答案...)
- 它在哪里得到这样一个熟悉的字符串表示 - 引用和转义?是否特别报告错误或是否是实际查询的一部分?
- 它是如何工作的?它是否用数据替换占位符?
- 有没有办法让整个查询,而不是一点点,用于调试目的?
更新
mysqli
做它如期望的那样,它抛出一个错误说:near 'INN(?,?)'
@DrColossos有答案,@Cassy有解释。 – 2010-09-16 13:45:28