使用PDO 準備好的語句高效插入多行
PDO 允許插入多行,而不是使用單獨的參數執行多個插入語句使用單一查詢。這種方法透過避免多次準備和執行語句的需要來增強效能和安全性。
例如,將陣列$values 中的值插入表table 中:
$params = []; foreach ($values as $value) { array_push($params, $value['val1'], $value['val2'], $value['val3']); } $row_length = count($values[0]); $nb_rows = count($values); $length = $nb_rows * $row_length; $args = implode(',', array_map(function($el) { return '('.implode(',', $el).')'; }, array_chunk(array_fill(0, $length, '?'), $row_length))); $query = "INSERT INTO table VALUES " . $args; $stmt = DB::getInstance()->prepare($query); $stmt->execute($params);
在此解中, ?佔位符是根據行數和列數動態產生的。然後將參數附加到數組並作為單一數組傳遞給執行方法。這保證了每個參數都是單獨處理的,從而確保資料安全。
或者,如果有太多行無法使用單一查詢有效插入,請考慮單獨執行它們:
$args = array_fill(0, count($values[0]), '?'); $query = "INSERT INTO table VALUES (".implode(',', $args).")"; $stmt = $pdo->prepare($query); foreach ($values as $row) { $stmt->execute($row); }
這該方法在容納大型資料集的同時保持了使用準備好的語句的安全優勢。
以上是如何使用 PDO 準備語句有效地將多行插入資料庫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!