將字串陣列綁定到WHERE IN(?) 子句
將值數組綁定到WHERE IN(?) 子句是一個常見的MySQL 任務。當使用 PHP 的 mysqli 準備好的語句時,如果您不熟悉 bind_param() 函數的限制和細微差別,那麼實作起來可能會很困難。
問題
嘗試使用bind_param()將值數組綁定到IN(?)子句時可能會遇到問題,導致失敗
解決方案
完成此任務有不同的方法,取決於您使用的PHP 版本:
PHP 8.2 和上面
PHP 8.1
早期PHP 版本
對於舊版本,需要更複雜的方法:
範例程式碼
這是使用早期PHP 版本方法的範例:
$array = ['Nashville', 'Knoxville']; $in = str_repeat('?,', count($array) - 1) . '?'; $sql = "SELECT name FROM table WHERE city IN ($in)"; $stmt = $mysqli->prepare($sql); // prepare $types = str_repeat('s', count($array)); // types $stmt->bind_param($types, ...$array); // bind array at once $stmt->execute(); $result = $stmt->get_result(); $data = $result->fetch_all(MYSQLI_ASSOC);
透過了解這些方法,您可以使用mysqli 準備好的語句有效地將字串陣列綁定到WHERE IN(?) 子句,從而確保成功執行您的查詢。
以上是如何使用 PHP 的 mysqli 準備語句有效率地將字串陣列綁定到 MySQL WHERE IN(?) 子句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!