在 PHP 中建構 MySQL 準備語句時,出現瞭如何處理參數數量可變的查詢的問題。例如,考慮這樣的查詢:
SELECT `age`, `name` FROM `people` WHERE id IN (12, 45, 65, 33)
IN 子句中的 ID 數量隨每次執行而變化。
存在多種方法來解決此挑戰:
解決方案1:虛擬變數和多次調用
解決方案2:非準備查詢
但是,其他選項提供更好的效率:
臨時表方法
動態 IN 子句
例如:
$dbh = new PDO(...); $parms = [12, 45, 65, 33]; $inclause = implode(',', array_fill(0, count($parms), '?')); // = ?,?,?,? $preparesql = sprintf('SELECT age, name FROM people WHERE id IN (%s)', $inclause); $st = $dbh->prepare($preparesql); $st->execute($parms);
第一種方法對於大集合可能更有效,而第二種方法是適合較小的。
以上是如何處理 MySQL 準備語句中動態大小的參數清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!