處理批次資料插入時,建構具有多行的單一查詢比執行多個單獨的查詢更有效。但是,使用準備好的語句進行多行插入需要稍微不同的方法。
建立多行語句
要使用準備好的語句插入多行,您可以利用字串連線方法:
<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中文網其他相關文章!