mysqli::next_result

mysqli_next_result

(PHP 5)

mysqli::next_result -- mysqli_next_result Подготовка следующего доступного результирующего набора из multi_query

Описание

Объектно-ориентированный стиль

bool mysqli::next_result ( void )

Процедурный стиль

bool mysqli_next_result ( mysqli $link )

Подготавливает следующий доступный результирующий набор предыдущего вызова функции mysqli_multi_query(), который затем можно получить функциями mysqli_store_result() или mysqli_use_result().

Список параметров

link

Только для процедурного стиля: Идентификатор соединения, полученный с помощью mysqli_connect() или mysqli_init()

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примеры

См. mysqli_multi_query().

Смотрите также

  • mysqli_multi_query() - Выполняет запрос к базе данных
  • mysqli_more_results() - Проверка, есть ли еще результаты в мультизапросе
  • mysqli_store_result() - Передает результирующий набор последнего запроса
  • mysqli_use_result() - Готовит результирующий набор на сервере к использованию

Коментарии

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

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