【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);
?>
<?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_row,mysql_fetch_array,mysql_fetch_assoc的区别
- mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
- php 索引,关联数组之mysql_fetch_assoc ,mysql_fetch_array,mysql_fetch_row 三者的区别?
- mysql_fetch_row,mysql_fetch_array,mysql_fetch_object,mysql_fetch_assoc的区别
- mysql_fetch_row,mysql_fetch_array,mysql_fetch_object,mysql_fetch_assoc的区别
- mysql_fetch_row,mysql_fetch_array,mysql_fetch_object,mysql_fetch_assoc,的用法及区别
- mysql_fetch_assoc() ,mysql_fetch_array() , mysql_fetch_row()的区别
- [转]mysql_fetch_row,mysql_fetch_array,mysql_fetch_object,mysql_fetch_assoc的区别
- mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
- mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
- mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
- php函数mysql_fetch_row、assoc、array、object的区别
- mysql_fetch_assoc和mysql_fetch_array、mysql_fetch_row的区别
- mysql_fetch_row,mysql_fetch_array,mysql_fetch_object,mysql_fetch_assoc的区别
- php中mysql_fetch_row与mysql_fetch_assoc与mysql_fetch_array()的区别
- mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
- mysql_fetch_row,mysql_fetch_array,mysql_fetch_object,mysql_fetch_assoc的区别!
- mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc以及mysql_fetch_object的区别
- [转]mysql_fetch_row,mysql_fetch_array,mysql_fetch_object,mysql_fetch_assoc的区别
- mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别