如何在 MySQLi 中使用單一準備語句插入多行?

DDD
發布: 2024-10-20 16:38:02
原創
258 人瀏覽過

How to Insert Multiple Rows with a Single Prepared Statement in MySQLi?

在MySQLi 中使用單個準備好的語句插入多行

問題:

插入多個使用準備好的語句將行存入資料庫,避免了每一行單獨查詢的需要。

解決方案:

雖然準備好的語句通常處理單行操作,但這是可能的使用特殊的查詢語法和方法插入多行。

方法:

  1. 建立值字串:使用array_merge() 和implode() 建構格式為「(, , ), ...”的值字串。這表示要插入的行。
  2. 準備語句:使用值字串作為 VALUES 子句準備一個查詢,並將其括在括號中。
  3. 建立綁定參數:確定行並準備一個綁定參數,其中字串重複為「i」(對於整數值)乘以行數乘以每行的列數。
  4. 綁定值:使用 ...array_merge( ...$rows) 從多維數組中解壓縮值並將它們綁定到參數。
  5. 執行語句:執行準備好的語句,透過單一查詢插入指定的行。

程式碼範例:

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

$stmt = $conn->prepare("INSERT INTO test (col1, col2, col3) VALUES $values");
$stmt->bind_param(str_repeat('i', $rowCount * 3), ...array_merge(...$rows));
$stmt->execute();</code>
登入後複製

替代方法:

使用單行的準備好的語句也是可以接受的佔位符並在每行循環中執行它,這更簡單,但效率可能較低。

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

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!