Recently, I don’t quite understand the several methods of querying mysql processing result sets in php I checked the information and compiled it here
Php uses the mysqli_result class to process result sets in the following ways
fetch_all() | 抓取所有的结果行并且以关联数据,数值索引数组,或者两者皆有的方式返回结果集。 |
fetch_array() | 以一个关联数组,数值索引数组,或者两者皆有的方式抓取一行结果。 |
fetch_object() | 以对象返回结果集的当前行。 |
fetch_row() | 以枚举数组方式返回一行结果 |
fetch_assoc() | 以一个关联数组方式抓取一行结果。 |
fetch_field_direct() | 以对象返回结果集中单字段的元数据。 |
fetch_field() | 以对象返回结果集中的列信息。 |
fetch_fields() | 以对象数组返回代表结果集中的列信息。 |
fetch_all (fetch all rows from result set as associative array)
<span>$sql</span>="select * from user"<span>; </span><span>$result</span>=<span>$link</span>->query(<span>$sql</span><span>); </span><span>$row</span>=<span>$result</span>->fetch_all(MYSQLI_BOTH);<span>//</span><span>参数MYSQL_ASSOC、MYSQLI_NUM、MYSQLI_BOTH规定产生数组类型</span> <span>$n</span>=0<span>; </span><span>while</span>(<span>$n</span><<span>mysqli_num_rows</span>(<span>$result</span><span>)){ </span><span>echo</span> "ID:".<span>$row</span>[<span>$n</span>]["id"]."用户名:".<span>$row</span>[<span>$n</span>]["name"]."密码:".<span>$row</span>[<span>$n</span>]["password"]."<br />"<span>; </span><span>$n</span>++<span>; }</span>
fetch_array (Fetch a row of results as an associative array, a numeric index array, or both)
<span>$sql</span>="select * from user"<span>; </span><span>$result</span>=<span>$link</span>->query(<span>$sql</span><span>); </span><span>while</span>(<span>$row</span>=<span>$result</span>-><span>fetch_array()){ </span><span>echo</span> "ID:".<span>$row</span>["id"]."用户名:".<span>$row</span>[1]."密码:".<span>$row</span>["password"]."<br />"<span>; } </span><span>//</span><span>fetch_array方法不再有结果时返回返回NULL //其返回结果可以是关联数组也可以是数值数组索引,故$row["id"]、$row[1]都可以</span>
fetch_object (Returns the current row of the result set as an object)
$sql=<span>"</span><span>select * from user</span><span>"</span><span>; $result</span>=$link-><span>query($sql); </span><span>while</span>($row=$result-><span>fetch_object()){ echo </span><span>"</span><span>ID:</span><span>"</span>.$row->id.<span>"</span><span>用户名:</span><span>"</span>.$row->name.<span>"</span><span>密码:</span><span>"</span>.$row->password.<span>"</span><span><br /></span><span>"</span><span>; } </span><span>//</span><span>如果无更多的行则返回NULL </span><span>//</span><span>返回的结果是对象,要以对象的方式调用</span>
fetch_row (Returns one row of results in an enumeration array)
<span>$sql</span>="select * from user"<span>; </span><span>$result</span>=<span>$link</span>->query(<span>$sql</span><span>); </span><span>while</span>(<span>$row</span>=<span>$result</span>-><span>fetch_row()){ </span><span>echo</span> "ID:".<span>$row</span>[0]."用户名:".<span>$row</span>[1]."密码:".<span>$row</span>[2]."<br />"<span>; } </span><span>//</span><span>无更多行时返回NULL //以数值下标调用数组,a[0]正确、a["id"]则不</span>
fetch_assoc (Fetch a row of results in an associative array)
<span>$sql</span>="select * from user"<span>; </span><span>$result</span>=<span>$link</span>->query(<span>$sql</span><span>); </span><span>while</span>(<span>$row</span>=<span>$result</span>-><span>fetch_assoc()){ </span><span>echo</span> "ID:".<span>$row</span>["id"]."用户名:".<span>$row</span>["name"]."密码:".<span>$row</span>["password"]."<br />"<span>; } </span><span>//</span><span>无更多行时返回NULL //以关联索引访问数组,a["id"]正确、a[0]则不</span>
fetch_field_direct (Returns the metadata of a single field in the result set as a single column of information )
<span>$sql</span>="select * from user"<span>; </span><span>$result</span>=<span>$link</span>->query(<span>$sql</span><span>); </span><span>$n</span>=0<span>; </span><span>while</span>(1<span>){ </span><span>if</span>(!<span>$row</span>=<span>$result</span>->fetch_field_direct(<span>$n</span>++)) <span>break</span><span>; </span><span>echo</span> "列名:".<span>$row</span>->name."所在表:".<span>$row</span>->table."数据类型:".<span>$row</span>->type."<br />"<span>; } </span><span>//</span><span>fetch_field_direct($n)只返回单个列,所以得不断调用该方法,没有该列时返回false</span>
fetch_field (returns the column information in the result set as an object)
<span>$sql</span>="select * from user"<span>; </span><span>$result</span>=<span>$link</span>->query(<span>$sql</span><span>); </span><span>while</span>(<span>$row</span>=<span>$result</span>-><span>fetch_field()){ </span><span>echo</span> "列名:".<span>$row</span>->name."所在表:".<span>$row</span>->table."数据类型:".<span>$row</span>->type."<br />"<span>; } </span><span>//</span><span>该方法检索所有的列 //以对象方式返回列信息 //返回对象属性如:name - 列名,table - 该列所在的表名,type - 该列的类型,等</span>
fetch_fields (returns column information representing the result set as an object array)
<span>$sql</span>="select * from user"<span>; </span><span>$result</span>=<span>$link</span>->query(<span>$sql</span><span>); </span><span>$row</span>=<span>$result</span>-><span>fetch_fields(); </span><span>foreach</span>(<span>$row</span> <span>as</span> <span>$val</span><span>){ </span><span>echo</span> "列名:".<span>$val</span>->name."所在表:".<span>$val</span>->table."数据类型:".<span>$val</span>->type."<br />"<span>; } </span><span>//</span><span>该方法功能与目的fetch_field一样 //不一样的是该方法返回一个对象数组(如:echo $row[0]->name;输出第一列的名字),而不是一次检索一列</span>
Another: The mysqli_result class has other methods
|
Returns the position of the field pointer | ||||||||||||||
data_seek() | Adjust the result pointer to an arbitrary row in the result set | ||||||||||||||
num_fields() | Returns the number of fields (number of columns) in the result set | ||||||||||||||
field_seek() | Adjust the field pointer to the specific field start position | ||||||||||||||
free() | Release the memory associated with a result set | ||||||||||||||
fetch_lengths() |
Returns the column length of the current row in the result set |
||||||||||||||
num_rows() |