UI設計したり、ウェブシステムを開発したりします。 

SQL見るだけクエリ#177 データベースに複数のレコードを一度に挿入する方法

記入日:2023-07-04 編集日:2023-07-04

データベースに複数のレコードを一度に挿入する方法について解説してみようと思います。

この記事を読むと(約5分)
データベースに複数のレコードを一度に挿入する方法についてイメージできます。

複数のレコードを一度に挿入

このコードを使用すると、一括で大量のデータをデータベースに挿入できます。また、トランザクションを使用することで、すべてのデータが正常に挿入されるか、エラーが発生した場合は変更をロールバックできます。これにより、データの整合性とデータベースの安全性が確保されます。

// データベースの接続情報
$host = 'localhost';
$dbname = 'your_database_name';
$user = 'your_username';
$password = 'your_password';

// データベースに接続
try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $user, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die('データベースに接続できませんでした: ' . $e->getMessage());
}

// インサートするデータの2次元配列
$data = array(
    array('John Doe', 25, 'johndoe@example.com'),
    array('Jane Smith', 30, 'janesmith@example.com'),
    array('Mike Johnson', 35, 'mikejohnson@example.com')
);

// プリペアドステートメントの作成
$stmt = $pdo->prepare("INSERT INTO users (name, age, email) VALUES (:name, :age, :email)");

// インサートの実行
try {
    $pdo->beginTransaction(); // トランザクションの開始

    foreach ($data as $row) {
        $name = $row[0];
        $age = $row[1];
        $email = $row[2];

        // パラメータのバインド
        $stmt->bindParam(':name', $name);
        $stmt->bindParam(':age', $age);
        $stmt->bindParam(':email', $email);

        // インサートの実行
        $stmt->execute();
    }

    $pdo->commit(); // トランザクションのコミット
    echo 'インサートが成功しました。';

} catch (PDOException $e) {
    $pdo->rollBack(); // トランザクションのロールバック
    die('インサートに失敗しました: ' . $e->getMessage());
}

// データベース接続の終了
$pdo = null;

まず、データベースの接続情報(ホスト名、データベース名、ユーザー名、パスワード)を設定します。次に、PDO(PHP Data Objects)を使用してデータベースに接続します。

データは、2次元配列として定義されています。各行は1つのレコードを表し、各列はそのレコードの値を表します(この例では、名前、年齢、メールアドレス)。

次に、プリペアドステートメントを作成します。プリペアドステートメントは、SQLクエリを準備し、パラメータをバインドするための仕組みです。この例では、INSERT文を準備しています。プレースホルダー(:name、:age、:email)は、実際の値と置き換えるためのパラメータです。

トランザクションを開始し、データを一括して挿入します。foreachループを使用して、データ配列内の各行に対して以下の処理を行います:

1、パラメータに値をバインドします。
2、プリペアドステートメントを実行し、データベースにレコードを挿入します。

すべてのレコードが正常に挿入された場合、トランザクションをコミットして変更を確定します。エラーが発生した場合は、トランザクションをロールバックして変更を取り消します。

最後に、データベース接続を閉じます。

SQLの使いどころ

サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。

SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。

また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。

KK

機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。