mysqli::next_result

mysqli_next_result

(PHP 5)

mysqli::next_result -- mysqli_next_resultPrepare next result from multi_query

Description

Object oriented style

bool mysqli::next_result ( void )

Procedural style

bool mysqli_next_result ( mysqli $link )

Prepares next result set from a previous call to mysqli_multi_query() which can be retrieved by mysqli_store_result() or mysqli_use_result().

Parameters

link

Procedural style only: A link identifier returned by mysqli_connect() or mysqli_init()

Return Values

Returns TRUE on success or FALSE on failure.

Examples

See mysqli_multi_query().

See Also

Коментарии

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!
2008-06-21 20:26:22
http://php5.kiev.ua/manual/ru/mysqli.next-result.html
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']);
  }
}
?>
2009-10-28 13:24:24
http://php5.kiev.ua/manual/ru/mysqli.next-result.html

    Поддержать сайт на родительском проекте КГБ