PHP - PDO:MySQL记录的准备语句包括PS数据

时间:2016-11-16 09:05:43

标签: php mysql pdo prepared-statement

我通过PDO在PHP中使用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

1 个答案:

答案 0 :(得分:2)

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

  • 一个显而易见的,默认情况下PDO只是emulates prepared statements,将常规SQL查询发送到服务器。
  • 如果使用了真正准备好的语句,您看到的日志条目已经人工召唤,特别是出于日志记录的目的,而准备好的语句已经正确执行,数据单独发送。 / LI>

因此,请确保关闭仿真模式,即binding your LOBs properly,并且不要担心