php從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
1.mysql_fetch_row,這個函數是從結果集中取一行做爲枚舉數據,從和指定的結果標識關聯的結果集中取得一行數據並做爲數組返回。每一個結果的列儲存在一個數組的單元中,偏移量從 0 開始。 注意,這裏是從0開始偏移,也就是說不能用字段名字來取值,只能用索引來取值,因此以下代碼是取不到值的:
while($row = mysql_fetch_row($res)){ echo $row['cid'].'::'.$row[1].」; } //這裏的$row['cid'] 取不到值。sql
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。fetch
其中:
一、mysql_fetch_assoc($result)==mysql_fetch_array($result,MYSQL_ASSOC);
二、mysql_fetch_row($result)==mysql_fetch_array($result,MYSQL_NUM);
因此mysql_fetch_array()函數在某種程度上能夠算是mysql_fetch_row()與 mysql_fetch_assoc()的集合。spa
另外,mysql_fetch_array()另外還有MYSQL_BOTH參數,將獲得一個同時包含關 聯和數字索引的數組。 code
在來講句 $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']更加清晰明瞭。