ホームページ  >  記事  >  データベース  >  PHP でプリペアドステートメントを使用してデータベースに複数の行を挿入するにはどうすればよいですか?

PHP でプリペアドステートメントを使用してデータベースに複数の行を挿入するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-09 17:14:02659ブラウズ

How to Insert Multiple Rows into a Database Using Prepared Statements in PHP?

準備されたステートメントを使用した複数の行の挿入

準備されたステートメントを使用した複数の行の挿入は、セキュリティを維持しながらデータベースにデータを追加する便利な方法です。データベース テーブルに挿入する値の配列があるとします。

$values = [
    [
        'val1' => 'val1',
        'val2' => 'val2',
        'val3' => 'val3'
    ],
    [
        'val1' => 'another_val1',
        'val2' => 'another_val2',
        'val3' => 'another_val3'
    ],
    // and so on...
];

単一の挿入クエリの使用

プリペアド ステートメントを使用してこれらの行を挿入するには、次のようにします。複数の VALUES 句を含む INSERT クエリを使用できます。

INSERT INTO table (col1, col2, col3)
VALUES (
    (:val11, :val21, :val31),
    (:val12, :val22, :val32),
    (:val13, :val23, :val33)
)

各行について、パラメータのセットを作成し、静的な値を名前付きパラメータに置き換えます。これにより、各パラメータが個別にバインドされるようになります。

$params = [];

foreach ($values as $row) {
    $params[':val1' . count($params)] = $row['val1'];
    $params[':val2' . count($params)] = $row['val2'];
    $params[':val3' . count($params)] = $row['val3'];
}

$sql = "INSERT INTO table (col1, col2, col3) VALUES (" . implode(',', array_keys($params)) . ")";
$stmt = DB::getInstance()->prepare($sql);
$stmt->execute($params);

大量の行のチャンク化

挿入する行が大量にある場合は、より効率的です。過剰なメモリ使用を避けるために、それらを小さなバッチに分割します。 array_chunk を使用して、値の配列を小さなチャンクに分割できます。

$chunkSize = 100; // Adjust this to your needs
$chunks = array_chunk($values, $chunkSize);

foreach ($chunks as $chunk) {
    // Prepare and execute insert query for each chunk
    // ...
}

代替アプローチ: 1 つずつ INSERT

各行を個別に挿入する必要がある場合は、次のアプローチを使用できます:

$stmt = DB::getInstance()->prepare(
    "INSERT INTO table (col1, col2, col3) VALUES (:val1, :val2, :val3)"
);

foreach ($values as $row) {
    $stmt->bindParam(':val1', $row['val1']);
    $stmt->bindParam(':val2', $row['val2']);
    $stmt->bindParam(':val3', $row['val3']);
    $stmt->execute();
}

この方法は効率的ではありませんが、大規模な場合には必要になる場合があります。データセット。

以上がPHP でプリペアドステートメントを使用してデータベースに複数の行を挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。