mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别


Posted in PHP onApril 24, 2009
<?php 
$link=mysql_connect('localhost','root',”); 
mysql_select_db('abc',$link); 
$sql = “select * from book”; 
$result = mysql_query($sql); 
while($row = mysql_fetch_row($result)) 
{ 
echo $row['cid'].'::'.$row[1].'<br>'; 
} 
$result = mysql_query($sql); 
while($row = mysql_fetch_array($result)) 
{ 
echo $row['cid'].'::'.$row[1].'<br>'; 
} 
$result = mysql_query($sql); 
while($row = mysql_fetch_object($result)) 
{ 
echo $row->cid.'::'.$row->title.”<br>”; 
} 
$result = mysql_query($sql); 
while($row = mysql_fetch_assoc($result)) 
{ 
echo $row['cid'].'::'.$row[1].'<br>'; 
} 
?>

分析:
mysql_fetch_row,这个函数是从结果集中取一行作为枚举数据,从和指定的结果标识关联的结果集中取得一行数据并作为数组返回。每个结果的列储存在一个数组的单元中,偏移量从 0 开始。 注意,这里是从0开始偏移,也就是说不能用字段名字来取值,只能用索引来取值,所以如下代码是取不到值的:
while($row = mysql_fetch_row($res)){
echo $row['cid'].'::'.$row[1].”;
} //这里的$row['cid'] 取不到值。
mysql_fetch_array,从结果集中取得一行作为关联数组,或数字数组,或二者兼有,除了将数据以数字索引方式储存在数组中之外,还可以将数据作为关联索引储存,用字段名作为键名。 也就是说他得到的结果像数组一样,可以用key或者索引来取值,所以
while($row = mysql_fetch_array($res)){
echo $row['cid'].'::'.$row[1].”;
}//这里$row['cid'],$row[1]都能得到相应的值。
mysql_fetch_object,顾名思义,从结果集中取得一行作为对象,并将字段名字做为属性。所以只有这样才能取到值
while($row = mysql_fetch_object($res)){
echo $row->cid.'::'.$row->title.”";
}
mysql_fetch_assoc,从结果集中取得一行作为关联数组,也就是说这个函数不能像mysql_fetch_row那样用索引来取值,只能用字段名字来取,所以
while($row = mysql_fetch_assoc($res)){
echo $row['cid'].'::'.$row[1].”;
} //$row[1]这样是取不到值的
补充一点:
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参数,将得到一个同时包含关 联和数字索引的数组。
在来说句 $row = $db->fetch_array($query);
$db是人数据库操作类,$db->fetch_array($query),fetch_array($query)是那个db类里的方法,$row = $db->fetch_array($query)这句的意思是从记录集$query中得到数据库中的一行记录。
不用类可这样实现
$conn=@mysql_connect($host,$user,$pass); 
@mysql_select_db($database,$conn); 
$query=mysql_query($sql); 
while($row=mysql_fetch_array($query)){ 
$rows[]=$row; 
}
PHP 相关文章推荐
深入理解php的MySQL连接类
Jun 07 PHP
PHP 使用pcntl和libevent 实现Timer功能
Oct 27 PHP
CodeIgniter基本配置详细介绍
Nov 12 PHP
php 伪静态之IIS篇
Jun 02 PHP
PHP实现的简单mock json脚本分享
Feb 10 PHP
CodeIgniter多语言实现方法详解
Jan 20 PHP
编写PHP脚本清除WordPress头部冗余代码的方法讲解
Mar 01 PHP
Codeigniter中集成smarty和adodb的方法
Mar 04 PHP
PHP面向对象自动加载机制原理与用法分析
Oct 14 PHP
[原创]PHP实现SQL语句格式化功能的方法
Jul 28 PHP
php正则表达式使用方法整理集合
Jan 31 PHP
如何在PHP中读写文件
Sep 07 PHP
PHP 危险函数解释 分析
Apr 22 #PHP
php反弹shell实现代码
Apr 22 #PHP
将数组写入txt文件 var_export
Apr 21 #PHP
php 保留小数点
Apr 21 #PHP
PHP 中执行排序与 MySQL 中排序
Apr 21 #PHP
一个php导出oracle库的php代码
Apr 20 #PHP
php一句话cmdshell新型 (非一句话木马)
Apr 18 #PHP
You might like
强烈推荐:php.ini中文版(2)
2006/10/09 PHP
PHP处理SQL脚本文件导入到MySQL的代码实例
2014/03/17 PHP
关于PHP的curl开启问题探讨
2014/04/08 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
2015/07/01 PHP
php验证手机号码
2015/11/11 PHP
php抛出异常与捕捉特定类型的异常详解
2016/10/26 PHP
php生成条形码的图片的实例详解
2017/09/13 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
php中如何执行linux命令详解
2018/11/06 PHP
javascript ajax的5种状态介绍
2014/08/18 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
Node.js学习之TCP/IP数据通讯(实例讲解)
2017/10/11 Javascript
vue技术分享之你可能不知道的7个秘密
2018/04/09 Javascript
Vue弹出菜单功能的实现代码
2018/09/12 Javascript
使用mpvue搭建一个初始小程序及项目配置方法
2018/12/03 Javascript
NodeJS有难度的面试题(能答对几个)
2019/10/09 NodeJs
微信小程序实现电子签名并导出图片
2020/05/27 Javascript
vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据操作
2020/07/31 Javascript
python实现从字符串中找出字符1的位置以及个数的方法
2014/08/25 Python
在Django中创建第一个静态视图
2015/07/15 Python
python进程的状态、创建及使用方法详解
2019/12/06 Python
PyCharm GUI界面开发和exe文件生成的实现
2020/03/04 Python
Python pexpect模块及shell脚本except原理解析
2020/08/03 Python
详解向scrapy中的spider传递参数的几种方法(2种)
2020/09/28 Python
html5标记文字_动力节点Java学院整理
2017/07/11 HTML / CSS
GUESS西班牙官方网上商城:美国服饰品牌
2017/03/15 全球购物
英国时尚高尔夫服装购物网站:Trendy Golf
2020/01/10 全球购物
材料加工硕士生求职信
2013/10/10 职场文书
院领导写的就业推荐信
2014/03/09 职场文书
2014年酒店服务员工作总结
2014/12/08 职场文书
技术负责人岗位职责
2015/02/10 职场文书
2015年社区服务活动总结
2015/03/25 职场文书
社区禁毒宣传活动总结
2015/05/07 职场文书
学校后勤工作总结2015
2015/05/15 职场文书
压缩Redis里的字符串大对象操作
2021/06/23 Redis
MySQL时区造成时差问题
2022/04/13 MySQL