如何解決 PDO 中使用 LIMIT 子句傳遞陣列參數時出現的錯誤?

Linda Hamilton
發布: 2024-10-23 19:46:31
原創
624 人瀏覽過

How to Resolve Error When Passing Array Parameters with LIMIT Clause in PDO?

使用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 MySQL:使用 PDO:: ATTR_EMULATE_PREPARES 是否? ](https://pdosql.org/pdo-mysql-use-pdo-attr-emulate-prepares-or-not/)

以上是如何解決 PDO 中使用 LIMIT 子句傳遞陣列參數時出現的錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!