從PDO 預先準備語句擷取原始SQL 查詢
在PDO 中除錯預備語句可能具有挑戰性,因為原始SQL 查詢不易訪問。這是因為參數沒有插入到客戶端的 SQL 語句中。相反,參數是在execute()呼叫期間單獨發送的。
PDO的預設行為
預設情況下,PDO不提供直接取得最終SQL查詢的方法。 SQL語句在prepare()呼叫時傳送到資料庫,並在execute()呼叫時單獨傳送參數。
使用查詢日誌
一解決方法是啟用 MySQL 的常規查詢日誌。此日誌記錄執行的所有查詢,包括具有內插參數值的準備語句。您可以查看此日誌來檢查實際執行的 SQL 查詢。
PDO 模擬模式
或者,您可以設定 PDO::ATTR_EMULATE_PREPARES 屬性。啟用此屬性後,PDO 將在將 SQL 查詢傳送到資料庫之前將參數插入 SQL 查詢。但是,這不是真正的準備好的語句,可能會損害使用準備好的語句的安全性和效率優勢。
限制
無論使用哪種方法,都存在限制存取原始SQL 查詢:
結論
從PDO 準備好的語句中擷取原始SQL 查詢並擷取原始SQL 查詢不簡單。但是,使用 MySQL 的查詢日誌或設定 PDO 模擬模式可以提供用於偵錯目的的解決方法。了解使用這些解決方法的局限性和潛在影響非常重要。
以上是如何從 PDO 準備語句中檢索原始 SQL 查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!