加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – PDO参数化查询的工作方式

发布时间:2020-12-13 13:32:33 所属栏目:PHP教程 来源:网络整理
导读:请仔细阅读问题.通常愚蠢的“我的代码不起作用!!!”题. 当我运行此代码时出现预期的错误 try { $sth = $dbh-prepare("SELECT id FROM users WHERE name INN(?,?) "); $sth-execute(array("I'm","d'Artagnan"));} catch (PDOException $e) { echo $e-getMessa
请仔细阅读问题.通常愚蠢的“我的代码不起作用!!!”题.

当我运行此代码时出现预期的错误

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 );

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读