ホームページ  >  記事  >  バックエンド開発  >  PHPデータベースを学習するときに複数のSQLコマンドを一度に実行するにはどうすればよいですか?

PHPデータベースを学習するときに複数のSQLコマンドを一度に実行するにはどうすればよいですか?

WBOY
WBOYオリジナル
2021-10-27 18:10:064600ブラウズ

前回の記事では、「PHP で SQL クエリの結果を取得するための一般的な関数 (詳細な例)」で、PHP でデータベースをクエリするときによく使用されるいくつかの関数を詳しく紹介しました。この記事では、複数の SQL コマンドを一度に実行する方法を見てみましょう。みんなが助けてくれることを願っています!

PHPデータベースを学習するときに複数のSQLコマンドを一度に実行するにはどうすればよいですか?

前の記事では、SQL クエリ結果を取得するための一般的な関数を紹介しました。さまざまな関数を通じてデータをクエリすると、さまざまな形式が返されます。mysqli_query() を実行するこの関数は、一度に 1 つの SQL コマンドを実行します。PHP には、コードで複数の SQL コマンドを同時に実行できる関数、つまり mysqli_multi_query() 関数があります。次に、mysqli_multi_query() 関数について学びましょう。

<strong><span style="font-size: 20px;">mysqli_multi_query()</span></strong> 関数

の先ほど紹介した mysqli_query() 関数は、この関数を実行するときに一度に 1 つの SQL コマンドしか実行できませんが、複数の SQL コマンドを実行したい場合、mysqli_query() 関数では満足できません。 mysqli_multi_query() 関数を使用して、複数の SQL コマンドを一度に実行する必要があります。

mysqli_multi_query() 関数の構文形式は次のとおりです:

mysqli::multi_query(string $query)

これはオブジェクト指向の記述であり、以下はプロセス指向の記述です:

mysqli_multi_query(mysqli $link, string $query)

where 以下の点に注意してください:

  • $query はクエリ対象の SQL ステートメントを表します

  • # $link は、mysqli_connect() 関数を使用して返されるリンク識別子を表します。

  • $query は、パラメーターを表します。複数の SQL コマンドが含まれており、各 SQL コマンドを区切るにはセミコロン ; を使用します。この関数は、最初の SQL コマンドがエラーなしで実行された場合は TRUE を返し、それ以外の場合は FALSE を返します。

次に、複数の SQL コマンドを実行する例を通して、mysqli_multi_query() 関数の使用法を見てみましょう。例は次のとおりです:

<?php
    $host     = &#39;localhost&#39;;
    $username = &#39;root&#39;;
    $password = &#39;root&#39;;
    $dbname   = &#39;test&#39;;
    $mysql    = new Mysqli($host, $username, $password, $dbname);
    if($mysql -> connect_errno){
        die(&#39;数据库连接失败:&#39;.$mysql->connect_errno);
    }else{
        $sql    = &#39;select id,name from user;&#39;;  // SQL 语句
        $sql    .= &#39;select sex,age from user&#39;;  // SQL 语句
        if($mysql -> multi_query($sql)){
            do{
                if ($result = $mysql -> store_result()) {
                    while ($row = $result->fetch_row()) {
                        print_r($row);
                    }
                    $result->free();
                }
                if ($mysql -> more_results()) {
                    echo &#39;<hr>&#39;;
                }else{
                    break;
                }
            } while ($mysql -> next_result());
        }
        $mysql -> close();
    }
?>

出力結果:


PHPデータベースを学習するときに複数のSQLコマンドを一度に実行するにはどうすればよいですか?

mysqli_multi_query() 関数を通じて複数の SQL コマンドを実行すると、上記の結果が完成します。

mysqli_multi_query() 関数は接続して 1 つ以上のクエリを実行でき、各 SQL コマンドは結果を返す可能性があるため、各結果セットは次の場合に取得する必要があります。必要。したがって、この関数によって返された結果の処理にいくつかの変更が加えられました。最初のクエリ コマンドの結果は、

mysqli_use_result()

関数または mysqli_store_result() 関数を使用して読み取る必要があります。 。 mysqli_store_result() 関数を使用して、すべての結果をクライアントにすぐに返すこともでき、より効率的です。さらに、

mysqli_more_results()

関数を使用して、他の結果セットがあるかどうかを確認できます。 次の結果セットを処理したい場合は、mysqli_next_result() 関数を使用して次の結果セットを取得できます。次の結果セットがある場合、関数は TRUE を返します。次の結果セットがある場合は、

mysqli_use_result()

または mysqli_store_result() 関数を使用して結果セットの内容を読み取る必要があります。 上記はオブジェクト指向の方法を使用しています。次にプロセス指向の方法を見てみましょう。例は次のとおりです: <pre class="brush:php;toolbar:false">&lt;?php $host = &amp;#39;localhost&amp;#39;; $username = &amp;#39;root&amp;#39;; $password = &amp;#39;root&amp;#39;; $dbname = &amp;#39;test&amp;#39;; $link = @mysqli_connect($host, $username, $password, $dbname); if($link){ $sql = &amp;#39;select id,name from user;&amp;#39;; // SQL 语句 $sql .= &amp;#39;select sex,age from user&amp;#39;; // SQL 语句 $result = mysqli_multi_query($link, $sql); // 执行 SQL 语句,并返回结果 do{ if($data = mysqli_use_result($link)){ while ($row = mysqli_fetch_row($data)) { print_r($row); } mysqli_free_result($data); } if(mysqli_more_results($link)){ echo &amp;#39;&lt;hr&gt;&amp;#39;; }else{ break; } } while (mysqli_next_result($link)); mysqli_close($link); }else{ echo &amp;#39;数据库连接失败!&amp;#39;; } ?&gt;</pre>出力結果は上記の結果と同じです。そのため、mysqli_multi_query() 関数を使用して、複数の SQL コマンドを一度に完了します。

ご興味がございましたら、「

PHP ビデオ チュートリアル

」をクリックして、PHP の知識をさらにご覧ください。

以上がPHPデータベースを学習するときに複数のSQLコマンドを一度に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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