使用LIMIT 子句傳遞PDO 參數數組
簡介:
使用🎜>簡介:
問題陳述:
給出以下SQL 查詢:
SELECT * FROM table WHERE id LIKE CONCAT('%', :id, '%') LIMIT :limit1, :limit2
您想要執行此操作使用參數數組進行查詢,如下所顯示:
$stmt->execute($array);
但是,對LIMIT 參數(:limit1 和:limit2)使用bindParam() 方法會導致錯誤。
解決方案:
解決方案在於停用 PDO::ATTR_EMULATE_PREPARES 的預設 PDO 設定。此設定本質上指示 PDO 模擬準備好的語句,而不是在本機使用它們。
要停用此設定:
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
停用此設定後,可以使用下列指令準備和執行查詢參數數組,包括LIMIT 值:
$stmt = $pdo->prepare($sql); $stmt->execute(array(5)); //works!
意義:
停用PDO::ATTR_EMULATE_PREPARES 可以提高效能,因為它消除了模擬準備好的開銷聲明。但需要注意的是,由於效能原因,此設定預設為啟用。
其他資源:
以上是如何解決 PDO 中使用 LIMIT 子句傳遞陣列參數時出現的錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!