mysqli::next_result
mysqli_next_result
(PHP 5, PHP 7, PHP 8)
mysqli::next_result -- mysqli_next_result — multi_query の、次の結果を準備する
説明
オブジェクト指向型
手続き型
直近の mysqli_multi_query() コールから次の結果セットを用意します。 これは mysqli_store_result() あるいは mysqli_use_result() で取得することが可能です。
戻り値
成功した場合に true
を、失敗した場合に false
を返します。
mysqli_more_results() とは異なり、次のクエリがエラーになった場合は、同様に false
を返します。
エラー / 例外
mysqli のエラー報告 (MYSQLI_REPORT_ERROR
) が有効になっており、かつ要求された操作が失敗した場合は、警告が発生します。さらに、エラー報告のモードが MYSQLI_REPORT_STRICT
に設定されていた場合は、mysqli_sql_exception が代わりにスローされます。
例
mysqli_multi_query() を参照ください。
参考
- mysqli_multi_query() - データベース上でひとつ以上のクエリを実行する
- mysqli_more_results() - マルチクエリからの結果がまだ残っているかどうかを調べる
- mysqli_store_result() - 直近のクエリから結果セットを転送する
- mysqli_use_result() - 結果セットの取得を開始する
+add a note
User Contributed Notes 2 notes
pawel dot barcik at gmail dot com ¶
16 years ago
this function returns FALSE when you have an error in your syntax in one of your queries, so be carefull with this type of construction when tracking errors:
<?php
//error in the second sub query
$result = $db->multi_query("select * from news; seleeeeeeect id from news; update news set title='new title' where id= 12 ");
//code inside object class
$this->_db = new Mysqli($host, $user, $password, $database, $port, $socket);
do {
$result = $this->_db->store_result();
$this->_resultMulti[] = $result;
$this->_errnoMulti[] = $this->_db->errno;
if(is_object($result)) {
$result->free_result();
}
} while($this->_db->next_result());
?>
in this construction all you have in the $this->_errnoMulti is :
array(1) {
[0]=>
int(0)
}
which means that there are no errors if you are not checking how many queries are executed!
admin at travian-utils dot com ¶
15 years ago
Stored procedures few rowset example:
some_file.php
<?php
function proc() {
global $global;
$db_connect_list = array('site');
SQLinit($db_connect_list);
if(isset($global['error'])){return;}
SQL('CALL `procedure`();');
while($row=mysqli_fetch_assoc($global['result'])){
// do some
}
SQLnext();
while($row=mysqli_fetch_assoc($global['result'])){
// do some
}
SQLnext();
while($row=mysqli_fetch_assoc($global['result'])){
// do some
}
SQLclose($db_connect_list);
}
?>
config.php
<?php
$global['sys']['db']['site'] = array('host'=>'localhost', 'user'=>'site', 'pass'=>'');
?>
engine.php
<?php
function SQLinit($array_list){
global $global;
foreach($array_list as $set){
if(!$global['sys']['db'][$set]['connect'] = mysqli_connect(
$global['sys']['db'][$set]['host'],
$global['sys']['db'][$set]['user'],
$global['sys']['db'][$set]['pass'])){
$global['error']['code'] = 500;
$global['error']['text'] = 'Database not avaliable';
$w=fopen('error.log','a+');
fwrite($w,'time: '.date('Y M d H:i:s')."\r\n");
fwrite($w,'errno: '.mysqli_connect_errno()."\r\n");
fwrite($w,'error: '.mysqli_connect_error()."\r\n");
fclose($w);
return;
}
if(!isset($global['sys']['default_connect']))
$global['sys']['default_connect'] = $global['sys']['db'][$set]['connect'];
SQL('SET NAMES \'utf8\' COLLATE \'utf8_unicode_ci\';', $global['sys']['db'][$set]['connect']);
SQL('SET CHARACTER SET \'utf8\';', $global['sys']['db'][$set]['connect']);
SQL('SET character_set_connection = \'utf8\';', $global['sys']['db'][$set]['connect']);
}
}
function mTime(){
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec+(float)$sec);
}
function SQL($sql, $connect = -1){
global $global;
if($connect === -1)$connect = $global['sys']['default_connect'];
if(isset($global['error']['sql']))return;
while ($connect->next_result()) $connect->store_result();
$begin=mTime();
$global['result']=mysqli_query($connect, $sql);
$end=mTime();
$global['sys']['time_sql']+=$end-$begin;
$error=mysqli_error($connect);
if($error!=''){
$global['error']['code'] = 502;
$global['error']['text'] = 'SQL error';
$global['error']['sql'] = true;
$w=fopen('error.log','a+');
fwrite($w,'time: '.date('Y M d H:i:s')."\r\n");
fwrite($w,'errno: '.mysqli_errno($connect)."\r\n");
fwrite($w,'error: '.$error."\r\n");
fwrite($w,'sql: '.$sql."\r\n");
fclose($w);
}else{
$w=fopen('sql.log','a+');
fwrite($w,'time: '.date('Y M d H:i:s')."\r\n");
fwrite($w,'sql: '.$sql."\r\n");
fclose($w);
}
}
function SQLnext($connect = -1){
global $global;
if($connect === -1)$connect = $global['sys']['default_connect'];
if(isset($global['error']['sql']))return;
$connect->next_result();
$global['result'] = $connect->store_result();
}
function SQLclose($array_list){
global $global;
foreach($array_list as $set){
mysqli_close($global['sys']['db'][$set]['connect']);
}
}
?>
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google