mysql_fetch_row,mysql_fetch_array,mysql_fetch_object,mysql_fetch_assoc

6105 ワード

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,この関数は,結果セットから列挙データとして1行をとり,指定した結果識別子に関連付けられた結果セットから1行のデータを取得し配列として返す.各結果のカラムは配列のセルに格納され、オフセット量は0から始まります.なお、ここでは0からオフセット、すなわちフィールド名で値を取ることはできず、インデックスで値を取るしかないので、while($row=mysql_fetch_row($res){echo$row['cid'].':'.$row[1].];}//ここで$row['cid']は値が取れません.
 
 
2.mysql_fetch_arrayは,結果セットから1行を関連配列として取得したり,数値配列として取得したり,両者を兼ね備えたりして,データを数値インデックス方式で配列に格納するほか,データを関連インデックスとして格納し,フィールド名をキー名として格納することもできる.つまり、彼が得た結果は配列のようにkeyやインデックスで値を取ることができるので、while($row=mysql_fetch_array($res){echo$row['cid'].':'.$row[1].}//ここで$row['cid'],$row[1]はいずれも対応する値を得ることができる.
 
 
3.mysql_fetch_objectは,その名の通り,結果セットから1行をオブジェクトとして取得し,フィールド名を属性とする.したがって、while($row=mysql_fetch_object($res){echo$row->cid.':'.$row->title.";}
 
 
4.mysql_fetch_assocは、結果セットから関連配列として1行を取得します.つまり、この関数は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()でオプションの2番目のパラメータ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からデータベース内の1行のレコードを得ることを意味します.クラスを使用しない実装コードは、次のとおりです.
$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']はもっとはっきりしている.