首頁 > 後端開發 > php教程 > 如何將字串陣列綁定到 MySQLi WHERE IN (?) 子句?

如何將字串陣列綁定到 MySQLi WHERE IN (?) 子句?

Mary-Kate Olsen
發布: 2024-12-25 22:05:13
原創
422 人瀏覽過

How to Bind an Array of Strings to a MySQLi WHERE IN (?) Clause?

使用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 之前的版本,需要執行以下步驟:

  • 建立一串佔位符(例如「?, ?" 對於兩個值的陣列)。
  • 將此字串新增至查詢。
  • 準備語句。
  • 建立一個類型的字串(例如,「ss」表示兩個字串值)。
  • 使用參數解包綁定數組值
$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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板