]mysql_fetch_row, mysql_fetch_array, mysql_fetch_assoc的區別和不同

來源:互聯網
上載者:User
很多初學者搞不懂這些Mysql中從查詢結果集中取得資料的函數之間有什麼區別,先給大家一段PHP執行個體代碼如下:<?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;
}

轉載本站文章請註明,轉載自:法月部落格部落格 – http://www.zhangpingyong.com/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.