使用MySQLi 在WHERE IN (?) 子句中綁定字串陣列
使用MySQLi 準備好的語句時,必須理解如何將值數組綁定到WHERE IN (?) 子句。本文提供了有效解決此問題的全面指南。
挑戰
目標是將城市名稱陣列動態綁定到 WHERE IN 子句中MySQLi 準備好的語句。但是,由於數組綁定不正確,提供的程式碼最初無法執行。
綁定字串陣列
存在多種綁定字串陣列的方法。讓我們來探索可用的方法:
1。 execute_query() 函數 (PHP 8.2)
PHP 8.2 中引入了execute_query() 函數,提供了最簡單的解。此方法允許一次傳遞 SQL 語句和要綁定的值數組。
$array = ['Nashville', 'Knoxville']; $parameters = str_repeat('?,', count($array) - 1) . '?'; $sql = "SELECT name FROM table WHERE city IN ($parameters)"; $result = $mysqli->execute_query($sql, $array);
2.陣列傳入execute() (PHP 8.1)
在PHP 8.1 中,您可以將陣列直接傳遞給execute() 方法,無需佔位符或綁定。
$stmt = $mysqli->prepare($sql); $stmt->execute($array);
3.舊版的準備/綁定/執行
對於PHP 8.1 之前的版本,需要執行以下步驟:
$types = str_repeat('s', count($array)); $stmt->bind_param($types, ...$array);
範例:
$array = ['Nashville', 'Knoxville']; $in = str_repeat('?,', count($array) - 1) . '?'; $sql = "SELECT name FROM table WHERE city IN ($in)"; $stmt = $mysqli->prepare($sql); $stmt->bind_param(str_repeat('s', count($array)), ...$array); $stmt->execute(); $result = $stmt->get_result();
透過遵循這些方法,您可以遵循這些方法,您可以遵循這些方法,您可以遵循這些方法,您可以遵循這些方法,您可以遵循這些方法,您可以遵循這些方法,您可以遵循這些方法,您可以遵循這些方法,您可以遵循這些方法,您可以遵循這些方法,您可以遵循這些方法,您可以遵循這些方法,您可以遵循這些方法,您可以遵循這些方法,您可以遵循這些方法,您可以遵循這些方法,您可以遵循這些方法,您可以遵循這些方法,您可以遵循這些方法有效地將字串陣列綁定到WHERE IN (? MySQLi 準備好的語句中的) 子句。
以上是如何將字串陣列綁定到 MySQLi WHERE IN (?) 子句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!