現在の位置: ホーム> 最新記事一覧> connect()関数を使用してデータベース接続を確立した後、mysqli_multi_query()を使用して複数のSQLステートメントを実行する方法?

connect()関数を使用してデータベース接続を確立した後、mysqli_multi_query()を使用して複数のSQLステートメントを実行する方法?

M66 2025-05-24

PHPでデータベースを操作する場合、一般的な要件の1つは、複数のSQLステートメントを実行して、複雑なトランザクションまたはバッチデータ処理を完了することです。 mysqli_multi_query()関数はこれに合わせて設計されているため、複数のSQLステートメントを一度に実行できるようになり、効率が向上し、コードが簡素化されます。この記事では、connect()関数を使用してデータベース接続を確立し、戻り結果を処理した後、 mysqli_multi_query()を使用して複数のSQLステートメントを正しく実行する方法を詳細に説明します。

1.データベース接続を確立します

まず、 Connect()関数を介してMySQLデータベースへの接続を確立します。これが有効なmysqliオブジェクトを返すパッケージ化された関数であるとします。

 <?php
function connect() {
    $host = 'localhost';
    $user = 'root';
    $password = 'password';
    $database = 'testdb';

    $conn = new mysqli($host, $user, $password, $database);

    if ($conn->connect_error) {
        die('接続に失敗しました: ' . $conn->connect_error);
    }

    return $conn;
}
?>

2。mysqli_multi_query()を使用して複数のSQLステートメントを実行します

テーブルの作成、データの挿入などなど、実行する複数のSQLステートメントがあると仮定し、それらをセミコロン( ; )delimited文字列に結合し、 mysqli_multi_query()に渡すことができます。

 <?php
$conn = connect();

$sql = "
CREATE TABLE IF NOT EXISTS users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL
);
INSERT INTO users (username, email) VALUES ('チャン・サン', 'zhangsan@m66.net');
INSERT INTO users (username, email) VALUES ('li si', 'lisi@m66.net');
";

if ($conn->multi_query($sql)) {
    do {
        // 最初の結果セットを保存します
        if ($result = $conn->store_result()) {
            while ($row = $result->fetch_assoc()) {
                print_r($row);
            }
            $result->free();
        }
        // より多くの結果セットがある場合,ループを続けます
    } while ($conn->more_results() && $conn->next_result());
} else {
    echo "複数のステートメントの実行に失敗しました: " . $conn->error;
}

$conn->close();
?>

3.キーポイントの説明

  • SQLステートメント形式:複数のSQLステートメントはセミコロンで分離する必要があり、各ステートメントには正しい構文があります。

  • 結果処理mysqli_multi_query()が実行された後、すべての結果セットは、looping store_result()およびmore_results()によって移動する必要があります。いくつかのステートメントが結果を返さない場合でも、 next_result()に電話して次の結果にジャンプします。

  • エラー処理:実行が失敗した場合、 $ conn->エラーを使用して特定のエラー情報を取得でき、簡単にデバッグできます。

4。URLドメイン名交換手順