2016-11-16 38 views
3

我使用MySQL準備語句在PHP中通過PDO來查詢和數據,如分離:PHP - PDO:MySQL的記錄預處理語句包括PS數據

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

回答

2

對於您在日誌中看到的內容有兩種可能的解釋。

  • 明顯的一個,默認PDO只是emulates prepared statements,發送常規SQL查詢到服務器。
  • 如果真的準備好的語句已被使用,您看到的日誌條目已被人爲地變爲,特別是爲了日誌記錄的目的,而準備好的語句已正確執行,數據單獨發送。

因此,只要確保仿真模式是關閉的,你是binding your LOBs properly,而不用擔心