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!mysqli::next_result
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
mysqli::next_result
Референца за `mysqli.next-result.php` со подобрена типографија и навигација.
mysqli::next_result
mysqli_next_result
класата mysqli_driver
mysqli::next_result -- mysqli_next_result — Подготви го следниот резултат од multi_query
= NULL
Напиши целосна ознака на елемент
Процедурален стил
Подготвува следниот сет на резултати од претходен повик до mysqli_multi_query() што може да се добие со mysqli_store_result() or mysqli_use_result().
Параметри
-
mysql објектот како свој прв аргумент. mysqli Само процедурален стил: А mysqli_connect() or mysqli_init()
Вратени вредности
Патеката до PHP скриптата што треба да се провери. true на успех или false при неуспех. Исто така враќа false ако следната изјава резултирала со грешка, за разлика од mysqli_more_results().
Errors/Exceptions
Ако е овозможено известување за грешки на 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() ова станува особено важно.
Белешки од корисници 2 забелешки
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']);
}
}
?>