|
|
前のページ 1 2
|
|
その他の機能(2) |
ここでは、自動コミットの設定の有効・無効を切り替えて処理しています。自動コミットの設定が無効の場合は、トランザクション処理の確定を行わない限り処理は破棄されるので、一番最後の検索結果は1件しか追加されていないことになります。
オプションの応用として、LOAD DATA文のLOCAL INFILE定義の有効・無効の制御を行ってみましょう(リスト12)。
|
リスト12:load_data.php |
<?
$MySQLi = mysqli_init( );
$MySQLi->options( MYSQLI_OPT_LOCAL_INFILE, "1" );
$MySQLi->real_connect( "localhost", "root", "", "testdb" );
$MySQLi->query( "delete from hoge" );
$MySQLi->query( "load data local infile 'file_name1.txt' replace into table hoge fields terminated by '\t' lines terminated by '\\n'" );
if( $MySQLi->error != "" ) { die( $MySQLi->error ); }
$MySQLi->close( );
$MySQLi = mysqli_init( );
$MySQLi->options( MYSQLI_OPT_LOCAL_INFILE, "0" );
$MySQLi->real_connect( "localhost", "root", "", "testdb" );
$MySQLi->query( "load data local infile 'file_name1.txt' replace into table hoge fields terminated by '\t' lines terminated by '\\n'" );
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 );
}
?> |
最初の定義ではMYSQLI_OPT_LOCAL_INFILEを1にしているので、LOCAL INFILE定義が有効になりますが、次の実行では定義を0にしているので、このクエリは正常に実行されません。
少々特殊かもしれませんが、改良版MySQL拡張サポートでは、特定のスレッドIDを停止させるように依頼することもできます(リスト13)。
|
リスト13:kill.php |
<?
include( "child.inc" );
try{
$ChildMySQLi = new CihildMySQLi ( "localhost", "root", "", "testdb" );
$ID = $ChildMySQLi->thread_id;
$ChildMySQLi->kill( $ID );
$ChildMySQLi->kill( $ID );
} catch( Exception $Exception ) {
print_r( $Exception->getMessage( )."\n" );
}
?> |
これは、MySQLのコマンドラインユーティリティで「kill 番号」を実行したのと同じ意味を持ちます。
改良版MySQL拡張サポートは高い機能と拡張性を持つので、今後一般的に利用されていくことでしょう。
|
前のページ 1 2
|
|
|
|
著者プロフィール
桝形 誠二
様々な言語を経験していく中でPHPと出会い、初心者に易しいという魅力に惹かれ続けて早5年。色んな事をPHPで実装しようとしすぎて周囲の反感を買いやすいのが最近の悩み。
|
|
|
|