TOP書籍連動> 複数のクエリを同時に実行




まるごと PHP!
まるごと PHP!

Part3:MySQL拡張サポート(3)

著者:桝形誠二(MASUGATA, Seiji)   2005/3/23
1   2  次のページ
複数のクエリを同時に実行

   改良版MySQL拡張サポートでは、それぞれのクエリをセミコロン(;)でつなげることで、複数のクエリを同時に実行できます。

   通常のクエリの実行にはquery()メソッドやexecute()メソッドを使いますが、複数のクエリを同時に実行する場合はmulti_query()メソッドを使います(リスト10)。
リスト10:multiQuery.php
<?
include( "child.inc" );

try{

$ChildMySQLi = new CihildMySQLi( "localhost", "root", "", "testdb" );

$SQL = "select no1, no2 from hoge where no1 <= 1 order by no1;".
"select no1, no2 from hoge where no1 <= 2 order by no1;".
"select no1, no2 from hoge where no1 <= 3 order by no1;".
"select no1, no2 from hoge where no1 <= 4 order by no1;".
"select no1, no2 from hoge where no1 <= 5 order by no1;";

$ChildMySQLi->multi_query( $SQL );

do {

$Result = $ChildMySQLi->store_result( );

while( $Array = $Result->fetch_row( ) )
{
print_r( $Array );
}

$Result->close( );

if( $ChildMySQLi->more_results( ) )
{echo "-----------------------------\n"; }

} while( $ChildMySQLi->next_result( ) );

} catch( Exception $Exception ) {

print_r( $Exception->getMessage( )."\n" );

}

?>

   結果を取得するときも、通常の結果の取得とは少し違います。まず、store_result()メソッドを使って、結果オブジェクトを取得し、データを取り出します。結果オブジェクトの使い方は、query()メソッドやexecute()メソッドの場合と変わりません。

   結果オブジェクトから取得できるデータをすべて得られたら、次はmore_results()メソッドを使って、次の結果 オブジェクトが存在するかどうかを調べていきます。存在する場合にはnext_result()メソッドを使って、次の結果オブジェクトへ移動します。移動した後は、最初のstore_result()メソッドを使って結果オブジェクトを取得し、またmore_results()メソッドを使って、……という処理を、すべての結果オブジェクトを取得するまで繰り返します。

その他の機能(1)

   改良版MySQL拡張サポートでは、さまざまなオプションを明示的に指定してMySQLデータベースに接続できます。

   まず、mysqli_init()関数を使ってMySQLiオブジェクトを初期化します。その後、options()メソッドを使ってオプションを定義します。オプションを定義したら、real_connect()メソッドを使ってMySQLデータベースへの接続処理を行います(リスト11)。

リスト11:real_connect.php
<?
$MySQLi = mysqli_init( );

$MySQLi->options( MYSQLI_INIT_COMMAND, "SET AUTOCOMMIT=1" );

$MySQLi->real_connect( "localhost", "root", "", "testdb" );

$MySQLi->query( "insert into hoge values( 88, 'test88' )" );

if( $MySQLi->error != "" ) { die( $MySQLi->error ); }

$MySQLi->close( );

$MySQLi = mysqli_init( );

$MySQLi->options( MYSQLI_INIT_COMMAND, "SET AUTOCOMMIT=0" );

$MySQLi->real_connect( "localhost", "root", "", "testdb" );

$MySQLi->query( "insert into hoge values( 99, 'test99' )" );

if( $MySQLi->error != "" ) { die( $MySQLi->error ); }

$MySQLi->close( );

$MySQLi = new mysqli( "localhost", "root", "", "testdb" );

$Result = $MySQLi->query( "select no1, no2 from hoge order by no1" );

if( $MySQLi->error != "" ) { die( $MySQLi->error ); }

while( $Array = $Result->fetch_assoc( ) )
{
print_r( $Array );
}

?>
1   2  次のページ



著者プロフィール
桝形 誠二
様々な言語を経験していく中でPHPと出会い、初心者に易しいという魅力に惹かれ続けて早5年。色んな事をPHPで実装しようとしすぎて周囲の反感を買いやすいのが最近の悩み。


この記事の評価をお聞かせください
ボタンをクリックしますとウインドウが開きます。
ご意見、ご要望にお応えします! インプレスIT INSIDE

INDEX
Part3:MySQL拡張サポート(3)
複数のクエリを同時に実行
  その他の機能(2)
まるごと PHP!
Part1 PHP5のオブジェクト指向(1)
PHP5のオブジェクト指向(2)
PHP5のオブジェクト指向(3)
Part2 トライ!SQLite(1)
トライ!SQLite(2)
トライ!SQLite(3)
Part3 MySQL拡張サポート(1)
MySQL拡張サポート(2)
MySQL拡張サポート(3)
Part4 PDO(PHP Data Object)データベース抽象化レイヤクラス(1)
PDO(PHP Data Object)データベース抽象化レイヤクラス(2)
PDO(PHP Data Object)データベース抽象化レイヤクラス(3)
Part5 PHP5のXMLサポート(1)
PHP5のXMLサポート(2)
PHP5のXMLサポート(3)
Part6 PHP4からPHP5への移行のポイント

Think IT 過去人気記事

注目おすすめ情報

Think IT人気ライター BEST 5

IT製品/サービス資料ダウンロード
    おすすめのホワイトペーパー情報を準備中です