コードを最小限に抑える以外に、ステートメントで複数の MySQL クエリを使用する利点は何ですか。
PHP (できれば PDO) を使用して、1 つのステートメントで送信された複数の MySQL クエリの結果をどのように実行、取得、および表示しますか。
mysql_query() は複数のクエリをサポートしていません。ただし、いくつかの回避策があります。
http://www.dev-explorer.com/articles/multiple-mysql-queries
http://php.net/function.mysql-query
使用しているデータベースに関係なく、1つのステートメントに複数のクエリを入れる方が効率的です。クエリを個別に実行する場合は、ネットワークを介して(または、少なくとも同じマシン上のプロセス間で)データベースを呼び出し、データベースへの接続(認証を含む)を取得し、クエリを渡して、結果セットを作成し、各クエリの接続を解放します。
接続プールを使用している場合でも、必要以上のリクエストをやり取りしていることになります。
したがって、たとえば、2つのクエリを1つに組み合わせると、2番目のクエリの余分な呼び出しをすべて節約できます。組み合わせるクエリが多いほど、アプリの効率が向上します。
別の例として、多くのアプリは起動時にリスト(ドロップダウンリストなど)にデータを入力します。それは多くのクエリになる可能性があります。それらすべてを1回の呼び出しで実行すると、起動時間が短縮されます。
私は今夜いくつかの調査を行っていて、このスレッドに出くわしました。上記の答えはどれも、この単純な問題に対する実行可能な解決策を提供しません。
OO アプローチを使用すると、multi_query() メソッドを使用して、1 つの接続で複数のクエリ ステートメントを実行できます。
$db_connection->multi_query($query);
クエリは整形式で、セミコロンで区切られている必要があります -> ;
SELECT データの処理方法の詳細については、PHP マニュアルを参照してください。
同じ呼び出しで複数のクエリを実行すると、セッション変数と一時テーブルを操作する必要がある場合に特に役立ちます。
select somecol, @somevar := group_concat( distinct somecol2 separator '|')
from sometbl
where
somecol LIKE "fueh"
group by somecol;
select somecol2
from sometbl
where
somecol LIKE "nyan"
and
vc_wp regexp concat( '(', @somevar, ')' )
order by somecol;