您的位置:首页 > Web前端

【Mysql】mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc,mysql_fetch_assoc的区别你知道吗?

2016-11-06 22:59 615 查看
下面以一个列子来讲解他们之间的区别和联系!

<?php

//连接数据库

$con=mysql_connect('localhost','hxs','1234');

echo'数据库连接成功!';

//选择数据库

mysql_select_db('test',$con);

echo'<br>选择数据库成功!';

//设置字符集,并从数据库中取数据

mysql_query('set names utf-8');

echo'<br>字符集为utf8!';

$sql='select * from testtable';



//使用mysql_fetch_row函数的情况:

$result=mysql_query($sql);

echo'<br>mysql_fetch_row显示结果';

while($row=mysql_fetch_row($result)){

echo'<br>';

echo '学号:'.$row[0].':'.'姓名:'.$row[1].'     ';

echo '学号:'.$row[id].':'.'姓名:'.$row[name];

}



/*mysql_fetch_row,这个函数是从结果集中取一行作为枚举数据,从和指定的结果标识关联的结果集中取得一行数据并作为数组返回。每个结果的列储存在一个数组的单元中,偏移量从 0 开始。 注意,这里是从0开始偏移,也就是说不能用字段名字来取值,只能用索引来取值。 

while($row = mysql_fetch_row($result)){ 

echo $row[0].':'.$row[1].; 

} 如果把这里的$row[0]、$row[1]换成$row[id]、$row[name]是取不到值的。*/

//使用mysql_fetch_array函数的情况:

$result=mysql_query($sql);

echo'<br>mysql_fetch_array显示结果';

while($row=mysql_fetch_array($result)){

echo'<br>';

echo '学号:'.$row[0].':'.'姓名:'.$row[1].'    ';

echo '学号:'.$row[id].':'.'姓名:'.$row[name];//此时也是生效的!

}



/*mysql_fetch_array,从结果集中取得一行作为关联数组,或数字数组,或二者兼有,除了将数据以数字索引方式储存在数组中之外,还可以将数据作为关联索引储存,用字段名作为键名。 也就是说他得到的结果像数组一样,可以用key或者索引来取值!*/

//使用mysql_fetch_assoc函数的情况:

$result=mysql_query($sql);

echo'<br>mysql_fetch_assoc显示结果';

while($row=mysql_fetch_assoc($result)){

echo'<br>';

echo '学号:'.$row[0].':'.'姓名:'.$row[1];//通过索引取不到值!

echo '学号:'.$row[id].':'.'姓名:'.$row[name];//通过字段才能取到值!

}



/*mysql_fetch_assoc,从结果集中取得一行作为关联数组,也就是说这个函数不能像mysql_fetch_row那样用索引来取值,只能用字段名字来取!

} //$row[0]、$row[1]这样是取不到值的 */

//使用mysql_fetch_object函数的情况:

$result=mysql_query($sql);

echo'<br>mysql_fetch_object显示结果';

while($row=mysql_fetch_object($result)){

echo'<br>';

echo '学号:'.$row->id.':'.'姓名:'.$row->name;

}



/*mysql_fetch_object,顾名思义,从结果集中取得一行作为对象,并将字段名字做为属性。所以只有这样才能取到值,不可以用索引或者字段取值! */

/*补充一点: 

mysql_fetch_array函数是这样定义的:array mysql_fetch_array ( resource result [, int result_type]),返回根据从结果集取得的行生成的数组,如果没有更多行则返回 FALSE。 

mysql_fetch_array() 中可选的第二个参数 result_type 是一个常量,可以接受以下值:MYSQL_ASSOC,MYSQL_NUM 和 MYSQL_BOTH。

1、mysql_fetch_assoc($result)==mysql_fetch_array($result,MYSQL_ASSOC); 

2、mysql_fetch_row($result)==mysql_fetch_array($result,MYSQL_NUM); 

所以mysql_fetch_array()函数在某种程度上可以算是mysql_fetch_row()与 mysql_fetch_assoc()的集合。另外,mysql_fetch_array()另外还有MYSQL_BOTH参数,将得到一个同时包含关 联和数字索引的数组。*/

//释放资源

mysql_close($con);

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql_fetch 区别 mysql