將字串陣列與mysqi 準備語句綁定
使用MySQL 時,通常需要將值陣列綁定到WHERE IN 子句使用準備好的語句。雖然此任務看似簡單,但存在一些可能導致錯誤的潛在陷阱。
在本文中,我們將探索使用 mysqli 準備好的語句綁定字串陣列的正確方法。我們還將提供所涉及步驟的詳細說明並討論潛在的解決方案。
出了什麼問題?
問題中提供的程式碼範例錯誤地嘗試使用bind_param 將城市陣列綁定到準備好的語句。然而,bind_param 期望標量值(例如,字串、整數等)作為其參數。嘗試直接綁定數組會導致錯誤。
正確的方法
要成功將字串陣列綁定到準備好的語句,我們可以使用以下程式碼步驟:
範例程式碼
這是正確的範例code:
$mysqli = new mysqli("localhost", "root", "root", "db"); if(!$mysqli || $mysqli->connect_errno) { return; } $cities = explode(",", $_GET['cities']); $in = str_repeat('?,', count($cities) - 1) . '?'; $query_str = "SELECT name FROM table WHERE city IN ($in)"; $query_prepared = $mysqli->stmt_init(); if($query_prepared && $query_prepared->prepare($query_str)) { $types = str_repeat('s', count($cities)); $query_prepared->bind_param($types, ...$cities); $query_prepared->execute(); }
在這個範例中,我們先使用str_repeat 建立一一串佔位符。然後,我們將此佔位符字串插入查詢中並準備語句。請注意我們如何使用 ...$cities 綁定城市數組的各個元素,並使用 str_repeat('s', count($cities)) 指定資料類型。
透過執行以下步驟,我們可以成功將字串陣列綁定到 mysqli 準備好的語句並按預期執行查詢。
以上是如何正確地將字串陣列綁定到 MySQLi 準備好的語句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!