如何在PHP 中的MySQL 查詢中使用陣列元素
在PHP 中,您可以使用陣列中的值執行My SQL 整數作為輸入參數。這種技術在對陣列中的每個元素執行單獨的 UPDATE 運算時特別有用。
準備語句:更安全、更有效率的方法
確保安全和效率對於您的查詢,強烈建議使用準備好的語句。這涉及建立參數化 SQL 查詢,然後在執行期間將陣列元素作為參數傳遞。
考慮以下 PHP 程式碼:
$ids = array(2, 4, 6, 8); $sql = "UPDATE MyTable SET LastUpdated = GETDATE() WHERE id = ?"; $stmt = $mysqli->prepare($sql); for ($i = 0; $i < count($ids); $i++) { $stmt->bind_param("i", $ids[$i]); $stmt->execute(); echo "Updated record ID: $id\n"; } $stmt->close();
此程式碼準備參數化 UPDATE 查詢,然後迭代數組,將每個元素綁定到佔位符 (?) 並執行查詢。透過使用準備好的語句,您可以降低 SQL 注入攻擊的風險並提高效能。
非迭代方法:高效的批次操作
另一種方法,適合批量操作,就是在SQL查詢中使用多個參數佔位符,並將陣列綁定到它們上
$ids = array(2, 4, 6, 8); $params = implode(",", array_fill(0, count($ids), "?")); $sql = "UPDATE MyTable SET LastUpdated = GETDATE() WHERE id IN ($params)"; $stmt = $mysqli->prepare($sql); $types = str_repeat("i", count($ids)); $args = array_merge(array($types), $ids); call_user_func_array(array($stmt, 'bind_param'), ref($args)); $stmt->execute(); $stmt->close(); echo "Updated record IDs: " . implode("," $ids) ."\n";
此方法準備單一參數化SQL 查詢並立即綁定整個數組,從而提高批量操作的效率。請記住使用 ref 函數建立對數組值的引用,這是 bind_param 方法正常工作所必需的。
透過利用提供的程式碼片段並了解準備好的語句的好處,您可以有效地使用陣列PHP 中 MySQL 查詢中的元素,確保安全性和效能最佳化。
以上是如何使用 PHP 陣列高效率更新多筆 MySQL 記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!