【发布时间】:2020-03-26 20:42:26
【问题描述】:
PDO 是否仍在为 MySQL 模拟准备好的语句?这已经在this 中回答了,但答案是多年前给出的,它很大,所以这里引用:
现在,值得注意的是,您可以通过禁用 emulated 准备好的语句:
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
这通常会产生一个真正的准备好的语句(即数据 从查询中以单独的数据包发送)。然而,成为 意识到 PDO 将默默地回退到模拟语句 MySQL不能原生准备:它可以列出的那些 手册,但要注意选择合适的服务器版本)。
我是通过
连接的$conn = new PDO("mysql:dbname=$dbname;host=$dbhost;charset=utf8",$dbuser,$dbpasswd);
有没有办法切换到mysqli?如果是这样,它会使用真正的准备吗?
using two versions php 7.2.19 and php 5.6
$ mysql --version
mysql Ver 14.14 Distrib 5.7.26, for Linux (x86_64) using EditLine wrapper
【问题讨论】:
-
“有没有办法切换到 mysqli?” - 如果你问,是否可以重写代码以使用 MySQLi 而不是 PDO,那么答案是肯定的…
-
你为什么不像引用中所说的那样禁用仿真?
-
@YourCommonSense 因为在使用 mysql 时禁用仿真回退到仿真