PHP mysql_fetch_array 函式

PHP mysql_fetch_array 函式屬於 mysql_fetch_row 的擴展函式,增加了一個參數,可以將 mysql_query 結果集,以數字索引或關連索引(以字段做為鍵名)等方式,儲存為 PHP Array 的結果形式,提供比 mysql_fetch_row 更豐富的應用方式以及調用便利。

PHP mysql_fetch_array 函式基本語法
array mysql_fetch_array ( resource $result , int $result_type )
基本語法中有兩個參數,第一個參數 $result 就是 mysql_query 的結果集,必要項目,第二個參數 $result_type 則為控制儲存鍵名的關鍵,有三個選擇可以使用,如下所示。
  • MYSQL_NUM - 僅得到數字索引(類似 mysql_fetch_row 的結果)
  • MYSQL_BOTH - mysql_fetch_array 預設值,可以為數字索引亦可為關連索引
  • MYSQL_ASSOC - 僅得到關連索引(索引為字段)
部分設計師可能會有點好奇,究竟儲存為數字索引以及關連索引有什麼差別?答案是當後續的 PHP script 在調用這個結果集的時候,可以用哪種方式調用,以下準備三個範例即可表達其差異。

PHP mysql_fetch_array 函式範例一、使用 MYSQL_NUM
<?
mysql_connect("localhost", "mysql_user", "mysql_password") or die("Could not connect DB.");
mysql_select_db("TestDB");
$result = mysql_query("SELECT test_id,test_name FROM topic");
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
 printf ("TID: %s  NAME: %s", $row[0], $row[1]);
}
?>
第一個範例是以數字索引儲存,所以最終調用結果時,可以直接使用 $row[0] 以及 $row[1] 這樣的寫法,但不能使用 $row[test_id] 以及 $row[test_name] 這樣的寫法。

PHP mysql_fetch_array 函式範例二、使用 MYSQL_BOTH
<?
mysql_connect("localhost", "mysql_user", "mysql_password") or die("Could not connect DB.");
mysql_select_db("TestDB");
$result = mysql_query("SELECT test_id,test_name FROM topic");
while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
 printf ("TID: %s  NAME: %s", $row[0], $row[1]);
}
?>
範例二採用了 MYSQL_BOTH 參數,所以調用時,無論使用 $row[0]、$row[1] 或 $row[test_id]、$row[test_name] 都是可行的做法。

PHP mysql_fetch_array 函式範例三、使用 MYSQL_ASSOC
<?
mysql_connect("localhost", "mysql_user", "mysql_password") or die("Could not connect DB.");
mysql_select_db("TestDB");
$result = mysql_query("SELECT test_id,test_name FROM topic");
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
 printf ("TID: %s  NAME: %s", $row[test_id], $row[test_name]);
}
?>
範例三使用 MYSQL_ASSOC 參數,所以最終調用時,僅能使用 $row[test_id]、$row[test_name] 這樣的寫法,使用數字索引的調用方式將無法取得陣列值。

以上即為 PHP mysql_fetch_array 函式的用法以及三種參數的差異,請自行依需求調整。

延伸閱讀
© Copyright wibibi.com 網頁設計教學百科 基礎的網頁設計規劃、資料庫與程式設計 Since 2012