mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的區(qū)別
更新時間:2009年04月24日 00:34:36 作者:
一直以來,有很多初學(xué)者搞不懂這些Mysql中從查詢結(jié)果集中取得數(shù)據(jù)的函數(shù)之間有什么區(qū)別,今天我就來秀一把,在秀之前先給大家一段PHP實例
復(fù)制代碼 代碼如下:
<?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,這個函數(shù)是從結(jié)果集中取一行作為枚舉數(shù)據(jù),從和指定的結(jié)果標(biāo)識關(guān)聯(lián)的結(jié)果集中取得一行數(shù)據(jù)并作為數(shù)組返回。每個結(jié)果的列儲存在一個數(shù)組的單元中,偏移量從 0 開始。 注意,這里是從0開始偏移,也就是說不能用字段名字來取值,只能用索引來取值,所以如下代碼是取不到值的:
while($row = mysql_fetch_row($res)){
echo $row['cid'].'::'.$row[1].”;
} //這里的$row['cid'] 取不到值。
mysql_fetch_array,從結(jié)果集中取得一行作為關(guān)聯(lián)數(shù)組,或數(shù)字?jǐn)?shù)組,或二者兼有,除了將數(shù)據(jù)以數(shù)字索引方式儲存在數(shù)組中之外,還可以將數(shù)據(jù)作為關(guān)聯(lián)索引儲存,用字段名作為鍵名。 也就是說他得到的結(jié)果像數(shù)組一樣,可以用key或者索引來取值,所以
while($row = mysql_fetch_array($res)){
echo $row['cid'].'::'.$row[1].”;
}//這里$row['cid'],$row[1]都能得到相應(yīng)的值。
mysql_fetch_object,顧名思義,從結(jié)果集中取得一行作為對象,并將字段名字做為屬性。所以只有這樣才能取到值
while($row = mysql_fetch_object($res)){
echo $row->cid.'::'.$row->title.”";
}
mysql_fetch_assoc,從結(jié)果集中取得一行作為關(guān)聯(lián)數(shù)組,也就是說這個函數(shù)不能像mysql_fetch_row那樣用索引來取值,只能用字段名字來取,所以
while($row = mysql_fetch_assoc($res)){
echo $row['cid'].'::'.$row[1].”;
} //$row[1]這樣是取不到值的
補(bǔ)充一點(diǎn):
mysql_fetch_array函數(shù)是這樣定義的:array mysql_fetch_array ( resource result [, int result_type]),返回根據(jù)從結(jié)果集取得的行生成的數(shù)組,如果沒有更多行則返回 FALSE。
mysql_fetch_array() 中可選的第二個參數(shù) 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()函數(shù)在某種程度上可以算是mysql_fetch_row()與 mysql_fetch_assoc()的集合。另外,mysql_fetch_array()另外還有MYSQL_BOTH參數(shù),將得到一個同時包含關(guān) 聯(lián)和數(shù)字索引的數(shù)組。
在來說句 $row = $db->fetch_array($query);
$db是人數(shù)據(jù)庫操作類,$db->fetch_array($query),fetch_array($query)是那個db類里的方法,$row = $db->fetch_array($query)這句的意思是從記錄集$query中得到數(shù)據(jù)庫中的一行記錄。
不用類可這樣實現(xiàn)
復(fù)制代碼 代碼如下:
$conn=@mysql_connect($host,$user,$pass);
@mysql_select_db($database,$conn);
$query=mysql_query($sql);
while($row=mysql_fetch_array($query)){
$rows[]=$row;
}
您可能感興趣的文章:
- oracle下巧用bulk collect實現(xiàn)cursor批量fetch的sql語句
- 基于JQuery框架的AJAX實例代碼
- jquery ajax提交表單數(shù)據(jù)的兩種方式
- 深入mysql_fetch_row()與mysql_fetch_array()的區(qū)別詳解
- 用mysql_fetch_array()獲取當(dāng)前行數(shù)據(jù)的方法詳解
- 深入理解用mysql_fetch_row()以數(shù)組的形式返回查詢結(jié)果
- mysql_fetch_row()與mysql_fetch_array()的使用介紹
- Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法總結(jié)
- php提示W(wǎng)arning:mysql_fetch_array() expects的解決方法
- 你不需要jQuery(三) 新AJAX方法fetch()
相關(guān)文章
PHP利用MySQL保存session的實現(xiàn)思路及示例代碼
使用MySQL保存session,需要保存三個關(guān)鍵性的數(shù)據(jù):session id、session數(shù)據(jù)、session生命期,下面的示例,大家可以看看2014-09-09PHP中$GLOBALS[''HTTP_RAW_POST_DATA'']和$_POST的區(qū)別分析
這篇文章主要介紹了PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的區(qū)別,結(jié)合具體實例形式分析了$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的功能與使用過程中的區(qū)別,需要的朋友可以參考下2017-07-07