mysql_fetch_array

(PHP 3, PHP 4, PHP 5)

mysql_fetch_array --  從結果集中取得一行作為關聯陣列,或數字陣列,或二者兼有

說明

array mysql_fetch_array ( resource result [, int result_type] )

返回根據從結果集取得的行建立的陣列,若果沒有更多行則返回 FALSE

mysql_fetch_array()mysql_fetch_row() 的增加版本。除了將資料以數字索引模式儲存在陣列中之外,還可以將資料作為關聯索引儲存,用欄位名作為鍵名。

若果結果中的兩個或以上的列具有相同欄位名,最後一列將優先。要訪問同名的其它列,必須用該列的數字索引或給該列起個別名。對有別名的列,不能再用原來的列名訪問其內容(本例中的 'field')。

例子 1. 相同欄位名的查詢

select table1.field as foo, table2.field as bar from table1, table2

有一點很重要必須指出,用 mysql_fetch_array()不明顯 比用 mysql_fetch_row() 慢,而且還提供了明顯更多的值。

mysql_fetch_array() 中可選的第二個參數 result_type 是一個常量,可以接受以下值:MYSQL_ASSOC,MYSQL_NUM 和 MYSQL_BOTH。本特性是 PHP 3.0.7 起新加的。本參數的預設值是 MYSQL_BOTH。

若果用了 MYSQL_BOTH,將得到一個同時包括關聯和數字索引的陣列。用 MYSQL_ASSOC 只得到關聯索引(如同 mysql_fetch_assoc() 那樣),用 MYSQL_NUM 只得到數字索引(如同 mysql_fetch_row() 那樣)。

注: 本函數返回的欄位名是區分大小寫的。

例子 2. mysql_fetch_array 使用 MYSQL_NUM

<?php
    mysql_connect
("localhost""mysql_user""mysql_password") or
        die(
"Could not connect: " mysql_error());
    
mysql_select_db("mydb");

    
$result mysql_query("SELECT id, name FROM mytable");

    while (
$row mysql_fetch_array($resultMYSQL_NUM)) {
        
printf ("ID: %s  Name: %s"$row[0], $row[1]);
    }

    
mysql_free_result($result);
?>

例子 3. mysql_fetch_array 使用 MYSQL_ASSOC

<?php
    mysql_connect
("localhost""mysql_user""mysql_password") or
        die(
"Could not connect: " mysql_error());
    
mysql_select_db("mydb");

    
$result mysql_query("SELECT id, name FROM mytable");

    while (
$row mysql_fetch_array($resultMYSQL_ASSOC)) {
        
printf ("ID: %s  Name: %s"$row["id"], $row["name"]);
    }

    
mysql_free_result($result);
?>

例子 4. mysql_fetch_array 使用 MYSQL_BOTH

<?php
    mysql_connect
("localhost""mysql_user""mysql_password") or
        die(
"Could not connect: " mysql_error());
    
mysql_select_db("mydb");

    
$result mysql_query("SELECT id, name FROM mytable");

    while (
$row mysql_fetch_array($resultMYSQL_BOTH)) {
        
printf ("ID: %s  Name: %s"$row[0], $row["name"]);
    }

    
mysql_free_result($result);
?>

參見 mysql_fetch_row()mysql_fetch_assoc()