Board logo

標題: MySQL資料庫函數詳解(3) [打印本頁]

作者: narita    時間: 2011-9-6 04:01     標題: MySQL資料庫函數詳解(3)

作者:隨想 OSO奧索 (9) string mysql_error(int [link_id]);
對於給定的連接,返回含有最近返回狀態的與MySQL相關的函數的錯誤消息文字串。空值意味著未出現錯誤。

<?php
$link=mysql_pconnect("localhost","sunsoft","suixiang") or die("Could not connect");
print("Connected successfully");
$query="SELECT * FROM president";
$result=mysql_query($query) or die("query failed,error message=".mysql_error());
?>

(10)array mysql_fetch_array(int result, int [result_typ]);
本函式用來將查詢結果 result 拆到陣列變數中。若 result 沒有資料,則傳回 false 值。而本函式可以說是 mysql_fetch_row() 的加強函式,除可以將傳回列及數字索引放入陣列之外,還可以將文字索引放入陣列中。若是好幾個傳回欄位都是相同的文字名稱,則最後一個置入的欄位有效,解決方法是使用數字索引或者為這些同名的欄位 (column) 取別名 (alias)。值得注意的是使用本函式的處理速度其實不會比mysql_fetch_row() 函式慢,要用哪個函式還是看使用的需求決定。參數 result_typ 是一個常數值,有以下幾種常數 MYSQL_ASSOC、MYSQL_NUM 與 MYSQL_BOTH。
使用範例


<?php
$link=mysql_pconnect("localhost","sunsoft","suixiang") or die("Could not connect");
mysql_select_db("stamp_db") or die("Could not select database");
$query="SELECT last_name,first_name FROM president";
$result=mysql_query($query) or die("Query failed");
while($row=mysql_fetch_array($result))
{
printf("%s %s<BR>
",$row[0],$row[1]);
printf("%s %s<BR>
",$row["last_name"],$row["first_name"]);
}
mysql_free_result($result);

?>


(11) object mysql_fetch_field(int result [,int col_num]);
返回結果集中給定列的相關元資料訊息,如果沒有這樣的列,則返回假。如果省略col_num,則對mysql_fetch_field()的後繼調用返回結果集後續列的訊息。如果不再有剩餘的列。則返回值為假。如果指定了col_num,則其取值範圍為0到mysql_num_fields()-1。在此情況下,mysql_num_fields()返回給定列的相關訊息,如果col_num超出範圍,返回假。
<?php
$link=mysql_pconnect("localhost","sunsoft","suixiang") or die("Could not connect");
mysql_select_db("stamp_db") or die("Could not select database");
$query="SELECT * FROM president";
$result=mysql_query($query) or die("Query failed");
for($i=0;$i<mysql_num_fields($result);$i++)
{
printf("information for column %d:<BR>
",$i);
$meta=mysql_fetch_field($result);
if(!$meta)
{
print("No information available<BR>
");
continue;
}
print("<PRE>
");
printf("blob: %s
",$meta->blob);
printf("max_length: %s
",$meta->max_length);
printf("multiple_key: %s
",$meta->multiple_key);
printf("name: %s
",$meta->name);
printf("not_null: %s
",$meta->not_null);
printf("numeric: %s
",$meta->numeric);
printf("primary_key: %s
",$meta->primary_key);
printf("table: %s
",$meta->table);
printf("type: %s
",$meta->type);
printf("unique_key: %s
",$meta->unique_key);
printf("unsigned: %s
",$meta->unsigned);
printf("zerofill: %s
",$meta->zerofill);
print("</PRE>
");
}
?>

(12) array mysql_fetch_lengths(int result);
本函式將 mysql_fetch_row() 處理過的最後一列資料的各欄位資料最大長度放在陣列變數之中。若執行失敗則傳回 false 值。傳回陣列的第一筆資料索引值是 0。

<?php
$link=mysql_pconnect("localhost","sunsoft","suixiang") or die("Could not connect");
mysql_select_db("stamp_db") or die("Could not select database");
$query="SELECT * FROM president" or die("Query failed");
$row_num=0;
while(mysql_fetch_row($result))
{
++$row_num;
printf("Lengths of values in row %d:<BR>
",$row_num);
$len=mysql_fetch_lengths($result);
if(!$len)
{
print("No information available<BR>
");
break;
}
print("<PRE>
");
for($i=0;$i<mysql_num_fields($result);$i++)
printf("Column %d: %s
",$i,$len[$i]);
print("</PRE>
");
}
?>




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)