首頁 >資料庫 >mysql教程 >如何有效率地向 MySQLi 中插入多行,同時防止 SQL 注入?

如何有效率地向 MySQLi 中插入多行,同時防止 SQL 注入?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-24 17:09:11519瀏覽

How Can I Efficiently Insert Multiple Rows into MySQLi While Preventing SQL Injection?

透過SQL 注入緩解在MySQLi 中高效插入多行

使用PHP 和MySQLi 將大量行插入多行

使用PHP 和MySQLi 將大量行插入SQL又高效的技術。在處理此類資料量時避免 SQL 注入可能具有挑戰性。

解決方案

$array = array("array", "with", "about", "2000", "values");
$query = "INSERT INTO table (link) VALUES (?)";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("s", $one);

$mysqli->query("START TRANSACTION");
foreach ($array as $one) {
    $stmt->execute();
}
$stmt->close();
$mysqli->query("COMMIT");

要解決此問題,請考慮使用交易將插入操作分組。這種方法涉及將準備和綁定操作移到循環之外,如下所示:

    事務的好處
  • 提高速度: 在事務中執行SQL 查詢可大幅減少開銷並提高效能。我們進行 10,000 次迭代的測試顯示,使用事務時速度提高了兩倍。
SQL 注入緩解:

交易將一系列操作分組到單一原子單元中,確保全部或都不執行的行被插入。這可以防止部分插入並防止 SQL 注入嘗試。

實作

請記住在 PHP 循環之外執行 START TRANSACTION 和 COMMIT 查詢以確保整個操作被視為單一交易。這種方法將準備好的語句的安全性與批次插入的效率結合起來,同時減少堆疊溢位。

以上是如何有效率地向 MySQLi 中插入多行,同時防止 SQL 注入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn