Stored procedures few rowset example:some_file.php<?phpfunction 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'])){ } SQLnext(); while($row=mysqli_fetch_assoc($global['result'])){ } SQLnext(); while($row=mysqli_fetch_assoc($global['result'])){ } SQLclose($db_connect_list);}?>config.php<?php $global['sys']['db']['site'] = array('host'=>'localhost', 'user'=>'site', 'pass'=>'');?>engine.php<?phpfunction 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']); }}?>