在PDO 中使用LIMIT 子句傳遞陣列參數
在PHP 中,PDOStatement 類別提供了一個使用參數化值執行SQL查詢的方法。但是,當使用 LIMIT 子句時,使用 bindParam() 方法綁定參數不起作用。
要解決此問題,請考慮以下解決方案:
<code class="php">$sql = "SELECT * FROM table WHERE id LIKE CONCAT('%', :id, '%') LIMIT :offset, :limit"; $stmt = $pdo->prepare($sql); // Turn off PDO emulation of prepared statements for MySQL $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $array = [':id' => 5]; // Bind the LIMIT parameters $stmt->bindParam(':offset', $limit1, PDO::PARAM_INT); $stmt->bindParam(':limit', $limit2, PDO::PARAM_INT); // Execute the query $stmt->execute($array); $results = $stmt->fetchAll();</code>
透過停用PDO 模擬預準備語句(MySQL 預設),它允許您在LIMIT 子句中使用參數化值。此方法可確保使用指定參數正確執行查詢。
請注意,關閉模擬可能會影響效能。更多詳情請參考PDO MySQL: Use PDO::ATTR_EMULATE_PREPARES or not?.
文檔以上是可以在 PDO 中使用 LIMIT 子句綁定陣列參數嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!