【问题标题】:PHP - PDO: MySQL's logged prepared statements include PS dataPHP - PDO:MySQL 记录的准备好的语句包括 PS 数据
【发布时间】:2016-11-16 09:05:42
【问题描述】:

我在 PHP 中通过 PDO 使用 MySQL 准备语句来分离查询和数据,例如:

CALL `celestial_object_view`(?, ?)

但是 MySQL 日志显示

CALL `celestial_object_view`('1', '1')

因此,我猜数据实际上是在发送到 MySQL 之前合并到查询中的?短数据不是问题,但是插入10Mo的Blob数据时,MySQL服务器尖叫超过max_allowed_packet

如何让 PDO/PHP/MySQL 将数据与 PS 分开考虑,这样我就可以执行包含大量数据的简短 PS,而不会到达 max_allowed_packet

【问题讨论】:

    标签: php mysql pdo prepared-statement


    【解决方案1】:

    您在日志中看到的内容有两种可能的解释。

    • 很明显,默认情况下 PDO 只是 emulates prepared statements,将常规 SQL 查询发送到服务器。
    • 如果使用了真正的prepared statement,那么您看到的日志条目是人为变出的,尤其是用于记录目的,而prepared statement 已正确执行,数据单独发送。

    所以,只要确保模拟模式已关闭,您是 binding your LOBs properly,别担心

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-27
      • 1970-01-01
      • 2011-01-08
      • 2014-08-04
      • 2010-11-30
      • 2021-01-28
      相关资源
      最近更新 更多