多查询中的mysqli num行

时间:2014-12-15 22:12:08

标签: php mysqli

我在MySQL中执行multi_query时尝试监视每个查询的num_rows,例如:

    $query= "SELECT * FROM `table1`;";
    $query.= "SELECT * FROM `table2`;";
    $display='';

    if ($mysqli->multi_query($query)) {
        do {  
            if ($result = $mysqli->store_result()) {
                $display.='<div>first table results</div>';  
                while ($row = $result->fetch_object()) {
                    $display.='<div>'.$row->id.'</div>';      
                }
                $result->free();
            }
            if ($mysqli->more_results()) {
                $display.='<div>second table results</div>';
            }
        } while ($mysqli->next_result());
    }
    else{
        echo $mysqli->error; exit(); 
    }

我需要分别知道每个表是否有查询结果并显示如下内容:

$display='<div>No results for table 1</div>';
$display='<div>No results for table 2</div>';

1 个答案:

答案 0 :(得分:0)

我想我会使用$ display作为数组来保存结果。我已经扩展了do while条件。只有在第一个查询错误时才会触发您的错误检查,我已将其移到multi_query if语句之外。

$query= "SELECT * FROM `table1`;";
$query.= "SELECT * FROM `table2`;";
$display=array();
$tableno=0;

if($mysqli->multi_query($query)){
    do{
        if($result=$mysqli->store_result()){
            ++$tableno;
            while($row=$result->fetch_object()){
                $display[$tableno].='<div>'.$row->id.'</div>';      
            }
            $result->free();
        }
    } while($mysqli->more_results() && $mysqli->next_result());
}
if($error_mess=$mysqli->error){$display[++$tableno]="<div>Error: $error_mess</div>";}

print_r($display);  //should provide all results/errors grouped by query