如何使用 PDO 準備語句有效地將多行插入資料庫?

Susan Sarandon
發布: 2024-11-09 09:27:02
原創
556 人瀏覽過

How can I efficiently insert multiple rows into a database using PDO prepared statements?

使用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中文網其他相關文章!

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