11.2.5 检索查询结果

我们可以使用不同的函数以不同的方式将查询结果从结果对象或标识符中取出来。结果对象或标识符是访问查询返回行的关键。

在这个例子中,我们统计了所返回记录行的行数,并且使用了mysqli_fetch_assoc()函数。

当使用面向对象方法时,返回的行数保存在结果对象的num_rows成员变量中,可以通过以下形式访问它:


$num_results=$result->num_rows;


当使用一个过程方法时,函数mysqli_num_rows()给出了查询返回的行数。你应该把它传给结果标识符,如下所示:


$num_results=mysqli_num_rows($result);


了解这一点是有用的——如果计划处理或显示该结果,现在可以知道这些结果有多少,并且通过一个循环就可以完成:


for($i=0;$i<$num_results;$i++){

//process results

}


在每轮循环中,我们都将调用$result->fetch_assoc()函数(或mysqli_fetch_assoc()函数)。

如果没有返回行,该循环将停止执行。该函数接受结果集合中每一行并以一个相关数组返回该行,每个关键词为一个属性名,每个值为数组中相应的值:


$row=$result->fetch_assoc();


或者可以使用过程方法:


$row=mysqli_fetch_assoc($result);


给定相关数组$row,我们可以遍历每个字段并适当地显示它们,例如:


echo"<br/>ISBN:";

echo stripslashes($row['isbn']);


如前所述,我们调用stripslashes()函数以便在显示前整理其值。

从结果标识符中获取查询结果有几种不同的方法。不使用相关数组,可以使用函数mysqli_fetch_row()将结果取回到一个列举数组中,如下所示:


$row=$result->fetch_row($result);


或者


$row=mysqli_fetch_row($result);


这里,属性值将在每个数组值$row[0]、$row[1]等等的里面列出(mysqli_fetch_array()函数允许获取一行,作为两种数组之一,或作为两种数组)。

也可以使用mysqli_fetch_object()函数将一行取回到一个对象中:


$row=$result->fetch_object();


或者


$row=mysqli_fetch_object($result);


然后,通过$row->title、$row->author等访问每个属性。