Man*_*ngo 6 php pdo prepared-statement
我已经多次读到,默认情况下,PDO 不使用本机准备好的语句,而是更喜欢模拟它们。要启用真正的准备好的语句,您可以添加:
\n\n$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);\nRun Code Online (Sandbox Code Playgroud)\n\n我还读到 MySQL 是这样,但 PostgreSQL 不是这样。
\n\n我真正希望阅读的一个地方是 PHP\xe2\x80\x99s 网站,但我发现根本没有提及它。
\n\n我能找到的最接近的是来自http://php.net/manual/en/pdo.prepare.php:
\n\n\n\n\nPDO 将为本身不支持它们的驱动程序模拟准备好的语句/绑定参数,并且如果驱动程序支持一种样式但不支持另一种样式,还可以将命名或问号样式参数标记重写为更合适的内容。
\n
在http://www.php.net/manual/en/ref.pdo-mysql.php它说:
\n\n\n\n\nPDO_MYSQL 将利用 MySQL 4.1 及更高版本中提供的本机预准备语句支持。如果您使用旧版本的 mysql 客户端库,PDO 将为您模拟它们。
\n
就我个人而言,我更喜欢使用真正的准备好的语句,这样 \xe2\x80\x99s 就很容易修复,尤其是在数据库支持相当好的 2017 年。
\n\n问题是:PDO 默认为模拟准备的记录在哪里?另外,这适用于所有数据库还是某些数据库?
\n\n注意:存在一个问题:默认情况下 PDO 总是使用模拟的准备好的语句吗?。这不是重复的(我已经读过):
\n\n这个问题并没有告诉我这实际上记录在哪里。
\n| 归档时间: |
|
| 查看次数: |
374 次 |
| 最近记录: |