首頁  >  文章  >  後端開發  >  如何在 MySQLi 中使用預先準備語句有效執行多行插入?

如何在 MySQLi 中使用預先準備語句有效執行多行插入?

Susan Sarandon
Susan Sarandon原創
2024-10-20 16:35:29533瀏覽

How to Perform Multiple Row Insertion Effectively in MySQLi Using Prepared Statements?

使用預先準備語句在MySQLi 中進行多行插入

處理批次資料插入時,建構具有多行的單一查詢比執行多個單獨的查詢更有效。但是,使用準備好的語句進行多行插入需要稍微不同的方法。

建立多行語句

要使用準備好的語句插入多行,您可以利用字串連線方法:

<code class="php">$rows = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
$rowCount = count($rows);
$values = "(" . implode('),(', array_fill(0, $rowCount, '?,?,?')) . ")";

$stmt = $mysqli->prepare("INSERT INTO table (col1, col2, col3) VALUES $values");</code>

這裡,$values 變數建立包含格式為(?, ?, ?), (?, ?, ?), ....

綁定和執行

一旦準備好語句,就可以綁定值並執行語句。但是,請注意,bind_param 期望所有參數都會作為單一數組傳遞,因此必須使用array_merge(...$rows) 方法對多行進行展平和解包:

<code class="php">$stmt->bind_param(str_repeat('i', $rowCount * 3), ...array_merge(...$rows));
$stmt->execute();</code>

這種方法允許您在一次資料庫存取中執行多行插入,提高批次資料插入操作的效率。

以上是如何在 MySQLi 中使用預先準備語句有效執行多行插入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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