mysql_fetch_assoc、mysql_fetch_object、mysql_fetch_row、mysql_fetch_array四个函数都是用来进行获取结果集中的一条记录的,通过while循环对结果集进行遍历操作。
上面的话是一个概述,四个函数的使用还是有差别的,具体如下:
1、mysql_fetch_assoc()
从结果集中取得一行作为关联数组,如果没有更多行,则返回 false。
$con = mysql_connect("localhost", "root", "123456") or die('数据库连接失败');
$db_selected = mysql_select_db("test",$con);
$sql = "SELECT * from person WHERE Lastname=zhang";
$result = mysql_query($sql,$con);
print_r(mysql_fetch_assoc($result));
mysql_close($con);
?>
输出:
Array
(
[LastName] => zhang
[FirstName] => san
[City] => beijing
)注意:上面的是关联数组,而且字段名是区分大小写的。
2、mysql_fetch_object()
从结果集(记录集)中取得一行作为对象,如果失败或没有更多的行,则返回 false。
$con = mysql_connect("localhost", "root", "123456") or die('数据库连接失败');
$db_selected = mysql_select_db("test",$con);
$sql = "SELECT * from person";
$result = mysql_query($sql,$con);
while($item=mysql_fetch_object($result)){
echo $item->FirstName."
" ;
}
mysql_close($con);
?>
输出:
zhangsan
lisi
wangwu对象成员变量的访问只能通过对象->成员变量的方式访问。
3、mysql_fetch_row()
从结果集中取得一行作为索引数组。
$con = mysql_connect("localhost", "root", "123456") or die('数据库连接失败');
$db_selected = mysql_select_db("test",$con);
$sql = "SELECT * from person WHERE Lastname=zhang";
$result = mysql_query($sql,$con);
print_r(mysql_fetch_row($result));
mysql_close($con);
?>输出:
Array
(
[0] => zhang
[1] => san
[2] => beijing
)索引数组的访问只能通过下标的方式进行访问。
4、mysql_fetch_array()
从结果集中取得一行作为关联数组,或索引数组,或二者兼有,返回根据从结果集取得的行生成的数组,如果没有更多行则返回 false。
$con = mysql_connect("localhost", "root", "123456") or die('数据库连接失败');
$db_selected = mysql_select_db("test",$con);
$sql = "SELECT * from person WHERE Lastname=zhang";
$result = mysql_query($sql,$con);
print_r(mysql_fetch_array($result));
mysql_close($con);
?>
输出结果:
Array
(
[0] => zhang
[LastName] => zhang
[1] => san
[FirstName] => san
[2] => beijing
[City] => beijing
)此种方式就是row、assoc两种方式的结合了,使用哪种访问都可以。
上面四个函数在结果集的遍历过程性能方面本人还没做过测试,不好下定论。
总结:个人项目中用到的最多的是第一个,不要问我为什么,个人喜好而已。