我在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>';
答案 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