请仔细阅读问题.通常愚蠢的“我的代码不起作用!!!”题.
当我运行此代码时出现预期的错误
try { $sth = $dbh->prepare("SELECT id FROM users WHERE name INN(?,?) "); $sth->execute(array("I'm","d'Artagnan")); } catch (PDOException $e) { echo $e->getMessage(); }
我收到此错误消息
You have an error in your sql Syntax … near ‘INN(‘I\’m’,’d\’Artagnan’)’ at line 1
但多年来我一直在想,查询和数据会分别发送到服务器并且永远不会干扰.因此我有一些问题(虽然我怀疑有人得到答案……)
>它在哪里得到如此熟悉的字符串表示 – 引用和转义?它是否特别报告错误或是否是实际查询的一部分?
>它是如何实际工作的?它是否用占位符代替数据?
>有没有办法获得整个查询,而不仅仅是一点点,用于调试目的?
更新
MysqLi按预期做到了:它在’INN(?,?)’附近发出错误
尝试添加
$dbh->setAttribute( PDO::ATTR_EMULATE_PREPARES,false );
总结
以上是DEVMAX为你收集整理的php – PDO参数化查询的工作方式全部内容。
如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。