使用MySQLi 準備好的語句插入多行
問題:
您想要
問題:您想要
問題:<code class="php">$rows = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; // Sample indexed array of indexed arrays $rowCount = count($rows); $values = "(" . implode('),(', array_fill(0, $rowCount, '?,?,?')) . ")"; $conn = new mysqli("localhost", "root", "", "myDB"); $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 準備好的語句將多行存入資料庫。您目前的方法涉及為要插入的每一行建立一個單獨的字串,這是低效的。您尋求一種方法來執行單一準備好的語句,該語句在一次執行中插入多行。
解決方案:
雖然準備好的語句通常用於單行操作,有一種複雜的技術允許在一個語句中插入多行。在索引數組的範例索引數組([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) 上進行測試,以下程式碼示範了該過程:<code class="php">foreach ($rows as $row) { $stmt = $conn->prepare("INSERT INTO test (col1, col2, col3) VALUES (?,?,?)"); $stmt->bind_param('iii', $row[0], $row[1], $row[2]); $stmt->execute(); }</code>此方法建構單一準備好的語句(“INSERT INTO test (col1, col2, col3) VALUES (...)”)並填入扁平$rows 陣列中的佔位符值。 str_repeat 函數用於定義綁定參數的適當數量的佔位符字元。
替代方法:
以上是如何使用 MySQLi 準備語句有效率地插入多行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!