mysql_fetch_row,mysql_fetch_array,mysql_fetch_object,mysql_fetch_assoc的区别!
php从mysql中访问数据库并取得数据,取得结果的过程中用到好几个类似的方法,区别及用法值得区分一下,看下面的代码
代码如下:
<?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>';
}
?>
分析:
1.mysql_fetch_row,这个函数是从结果集中取一行作为枚举数据,从和指定的结果标识关联的结果集中取得一行数据并作为数组返回。每个结果的列储存在一个数组的单元中,偏移量从 0 开始。 注意,这里是从0开始偏移,也就是说不能用字段名字来取值,只能用索引来取值,所以如下代码是取不到值的:
while($row = mysql_fetch_row($res)){ echo $row['cid'].'::'.$row[1].”; } //这里的$row['cid'] 取不到值。
2.mysql_fetch_array,从结果集中取得一行作为关联数组,或数字数组,或二者兼有,除了将数据以数字索引方式储存在数组中之外,还可以将数据作为关联索引储存,用字段名作为键名。 也就是说他得到的结果像数组一样,可以用key或者索引来取值,所以
while($row = mysql_fetch_array($res)){ echo $row['cid'].'::'.$row[1].”; }//这里$row['cid'],$row[1]都能得到相应的值。
3.mysql_fetch_object,顾名思义,从结果集中取得一行作为对象,并将字段名字做为属性。所以只有这样才能取到值
while($row = mysql_fetch_object($res)){ echo $row->cid.'::'.$row->title.”"; }
4.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; }
一般情况下我喜欢用mysql_fetch_object,因为他返回的是一个对象.$row->title要比.$row[0],.$row['title']更加清晰明了。
mysql_fetch_row,mysql_fetch_array,mysql_fetch_object,mysql_fetch_assoc的区别!的更多相关文章
- mysql_fetch_row,mysql_fetch_array,mysql_fetch_object,mysql_fetch_assoc区别
1.mysql_fetch_row 只能以索引下标取值,从0开始. 2.mysql_fetch_array 能以索引下标取值,也可以用字段名称取值. 3.mysql_fetch_object 对象方 ...
- 40)PHP,mysql_fetch_row和mysql_fetch_array和mysql_fetch_assoc的区别
分析: mysql_fetch_row,这个函数是从结果集中取一行作为枚举数据,从和指定的结果标识关联的结果集中取得一行数据并作为数组返回.每个结果的列储存在一个数组的单元中,偏移量从 开始. 注意, ...
- 【转】mysql_fetch_row , mysql_fetch_array , mysql_fetch_assoc 的区别
<?php $link = mysql_connect('localhost', 'root', ”); mysql_select_db('abc', $link); $sql = “selec ...
- mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
<?php $link=mysql_connect('localhost','root',”); mysql_select_db('abc',$link); $sql = “select * f ...
- 40)PHP,mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
分析: mysql_fetch_row,这个函数是从结果集中取一行作为枚举数据,从和指定的结果标识关联的结果集中取得一行数据并作为数组返回.每个结果的列储存在一个数组的单元中,偏移量从 开始. 注意, ...
- mysql 纸 mysql_fetch_array OR mysql_fetch_assoc OR mysql_fetch_row
<?php $con = mysql_connect("localhost", "root", "123456");if (!$con ...
- php中mysql_fetch_row() 和mysql_fetch_array之间有什么区别
mysql_fetch_row是从结果集取出1行数组,作为枚举 mysql_fetch_array是从结果集取出一行数组作为关联数组,或数字数组,两者兼得eg:$sql="select ab ...
- PHP常用函数整理
推荐网址:http://php.net/manual/zh/http://www.w3cschool.cc/php/php-ref-array.html 错误报告: error_reporting(E ...
- mysql和mysqli的区别
看书.看视频的时候一直没有搞懂mysqli和mysql到底有什么区别.于是今晚“谷歌”一番,整理一下.需要的朋友可以参考下. 一: PHP-MySQL 是 PHP 操作 MySQL 数据库最原始的 ...
随机推荐
- BackTrack5-r3 w3af无法更新问题解决
wget http://pypi.python.org/packages/source/p/pybloomfiltermmap/pybloomfiltermmap-0.2.0.tar.gz --no- ...
- 最适合和最不适合新手使用的几款 Linux 发行版
大多数知名的Linux发行版都属于"比较容易使用"这一类.一些观察人士可能会驳斥这个观点,但事实上,说到Linux,大多数并非从事IT或软件开发工作的人会被最容易的使用体验所吸引. ...
- nexus私服update repair index索引失败解决方案(转)
转载地址:http://blog.csdn.net/first_sight/article/details/51559086 问题描述: 搭建Maven的Nexus私服仓库,一般安装完Nexus后,默 ...
- C#基础——winform应用上传图片到SQLServer数据库
前言 之前通过winform与SQL Server的交互一直局限于文本.数字等信息,都可以通过string的方式来传输,但是比如音乐.图片等特殊格式的文件要如何与SQL Server数据库进行交互呢? ...
- 【转】JavaScript获取节点类型、节点名称和节点值
DOM节点信息包括节点类型(nodeType).节点名称(nodeName)和节点值(nodeValue). 节点类型 DOM节点中,每个节点都拥有不同的类型.W3C规范中常用的 DOM节点类型有以下 ...
- Repeater 根据某一列的值加颜色
//排队中 protected void rptOrdersList_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterIt ...
- 1.4 云计算的SPI服务模型
云计算是通过共享资源池的方式来提高资源利用率的.在云计算中,根据其资源池中资源的类别,可以把云计算的服务模型分为三种,即所谓的SPI 模型 应用程序 Software as a Service ( ...
- php-长文章分页函数
<?php function ff_page($content,$page) { global $expert_id; $PageLength = 2000; //每页字数 $CLength = ...
- jQuery的选择器中的通配符使用介绍
$("input[id^='data']");//id属性以data开始的所有input标签 $("input[id$='data']");//id属性以dat ...
- Ionic2学习笔记
Component nav: <ion-nav [root] = 'rootComponent'></ion-nav> ....import {Nav} from 'ionic ...