5

コードを最小限に抑える以外に、ステートメントで複数の MySQL クエリを使用する利点は何ですか。

PHP (できれば PDO) を使用して、1 つのステートメントで送信された複数の MySQL クエリの結果をどのように実行、取得、および表示しますか。

4

4 に答える 4

7

mysql_query() は複数のクエリをサポートしていません。ただし、いくつかの回避策があります。

http://www.dev-explorer.com/articles/multiple-mysql-queries
http://php.net/function.mysql-query

于 2009-03-27T18:10:36.367 に答える
4

使用しているデータベースに関係なく、1つのステートメントに複数のクエリを入れる方が効率的です。クエリを個別に実行する場合は、ネットワークを介して(または、少なくとも同じマシン上のプロセス間で)データベースを呼び出し、データベースへの接続(認証を含む)を取得し、クエリを渡して、結果セットを作成し、各クエリの接続を解放します。

接続プールを使用している場合でも、必要以上のリクエストをやり取りしていることになります。

したがって、たとえば、2つのクエリを1つに組み合わせると、2番目のクエリの余分な呼び出しをすべて節約できます。組み合わせるクエリが多いほど、アプリの効率が向上します。

別の例として、多くのアプリは起動時にリスト(ドロップダウンリストなど)にデータを入力します。それは多くのクエリになる可能性があります。それらすべてを1回の呼び出しで実行すると、起動時間が短縮されます。

于 2009-03-27T18:08:36.497 に答える
1

私は今夜​​いくつかの調査を行っていて、このスレッドに出くわしました。上記の答えはどれも、この単純な問題に対する実行可能な解決策を提供しません。

OO アプローチを使用すると、multi_query() メソッドを使用して、1 つの接続で複数のクエリ ステートメントを実行できます。

$db_connection->multi_query($query);

クエリは整形式で、セミコロンで区切られている必要があります -> ;

SELECT データの処理方法の詳細については、PHP マニュアルを参照してください。

于 2012-12-23T01:13:30.660 に答える
0

同じ呼び出しで複数のクエリを実行すると、セッション変数と一時テーブルを操作する必要がある場合に特に役立ちます。

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;
于 2013-03-12T12:50:24.383 に答える