網頁設計~PHP/MySQL連結函數

PHP/MySQL相關函數
一、連接資料庫

在連接資料庫時,使用以下的函式:

mysql_connect ([string server [, string username [, string password]]]) //持續性的資料庫連接

mysql_pconnect ([string server [, string username [, string password]]])

函式執行成功時,會傳回一個 MySQL link 的辨識資源,執行失敗則傳回 FALSE。函式的參數:(主機名稱或位址 ,使用者的帳號, 使用者的密碼)

例如:
$link = mysql_pconnect(“localhost”,”root”,”4321″);

二、選擇資料庫

取得資料庫連線之後,接下來便是選擇所要選取的資料庫。選擇資料庫的函式如下:

mysql_select_db (string database_name [, resource link_id])

函式執行成功,會傳回 True 值,否則傳回 False 值。函式的參數:資料庫名稱,MySQL link 的辨識資源。通常第二個參數可以省略。

例如:
mysql_select_db(“std”);

三、執行查詢

資料庫選擇完畢之後,便可以針對資料庫執行查詢的動作。以下是執行查詢所使用的函式:

mysql_query (string query [, resource link_id])

函式接受 SQL 命令,作為對資料庫執行查詢的命令。如果 SQL 命令是 SELECT類型,執行成功時,就會傳回資源辯識物件,作為之後處理查詢結果之用;否則,則傳回 False 值。其他類型的 SQL 命令,執行成功,會傳回 True 值,否則傳回 False 值。函式的參數:SQL 命令句、MySQL link 的辨識資源。通常第二個參數可以省略。

例如:
$result = mysql_query(“select * from user “);

四、處理查詢結果

如果之前所執行的查詢是 SELECT 類型,會傳回查詢結果。我們通常會利用執行查詢所得的資源物件,取得查詢結果,並逐筆處理其中的每一筆記錄。最常用的方式,是使用迴圈逐一執行 mysql_fetch_array()函式,然後將每一筆記錄放入陣列中,再讀取每一筆記錄,各欄位的值。

mysql_fetch_array (resource result [, int result_type])

函式執行成功時,傳回一筆記錄,並將紀錄放入陣列中。如果,查詢結果中,不再有任何紀錄時,則傳回 False 值。函式的參數:查詢結果的資源辯識物件,陣列的型態常數

陣列的型態常數,是一個整數的常數。它的值有以下三種:MYSQL_ASSOC、MYSQL_NUM、及MYSQL_BOTH。預設值是 MYSQL_BOTH。當第二個參數是MYSQL_ASSOC 時,函式會將紀錄存成使用文字指數的陣列。當第二個參數是MYSQL_NUM時,函式會將紀錄存成使用數值指數的陣列。當第二個參數是MYSQL_BOTH 時,函式會將紀錄存成可同時使用文字指數及數值指數的陣列。

例如:
$row = mysql_fetch_array($result);

五、關閉資料庫連結

如果,之前連接資料庫時,所使用的函式,是 mysql_connect(),則可以使用 mysql_close()函式來關閉資料庫的連接。若使用 mysql_pconnect(),則可省略這個步驟。不過,通常,在 PHP程式執行完畢時,會自動關閉資料庫的連接,所以不執行這個函式,也無所謂。

mysql_close ([resource link_identifier])

函式執行成功時,傳回 True 值。否則,則傳回 False 值。函式的參數:MySQL link 的辨識資源 ,參數通常可省略。

例如:
mysql_close($link);

六、其他函數

mysql_num_rows
語法:int mysql_num_rows ( resource RESULT)
說明:用來計算 RESULT 裡頭有多少個資料列。
用法:$num_rows = mysql_num_rows($result);

mysql_fetch_row (不建議使用)
語法:array mysql_fetch_row ( resource RESULT)
說明:搭配迴圈的使用,本函數可以從 RESULT 裡,將資料一列一列讀取出來。
用法一:
$num_rows = mysql_num_rows($result);
for ( $i=0; $i< $num_rows; $i++ ) {
list($value1, $value2) = mysql_fetch_row($result);
echo $value1;
echo $value2;
echo ……
}
用法二:
while ( list($value1, $value2) = mysql_fetch_row($result) ) {
echo $value1;
echo $value2;
echo ……
}
用法三:
while ( $value = mysql_fetch_row($result) ) {
echo $value[0];
echo $value[1];
echo ……
}

mysql_data_seek
語法:bool mysql_data_seek ( resource RESULT_IDENTIFIER, int ROW_NUMBER)
說明:將 RESULT_IDENTIFIER 的內部指標移到第 ROW_NUMBER 個 row 去。
用法:mysql_data_seek($result, 6);

mysql_insert_id
語法:int mysql_insert_id ( [resource LINK_IDENTIFIER])
說明:假如您將某個欄位的型態設為「AUTO_INCREMENT」的話,使用本函數將可以得知在 INSERT 敘述被執行時,MySQL 自動為該欄位產生的值為何。
用法:$ID = mysql_insert_id($link);

mysql_free_result
語法:bool mysql_free_result ( resource RESULT)
說明:釋放 RESULT 所佔用的記憶體。
用法:mysql_free_result($result);

mysql_error
語法:string mysql_error ( [resource LINK_IDENTIFIER])
說明:本函數用來取得 MySQL 在執行 SQL 敘述時的錯誤訊息。當您在為程式除錯時,可能會用得上它。
用法:$Error = mysql_error($link);

一個完整的例子

//顯示
$myquery = “select * from std”; $result = mysql_query($myquery) or die(“查詢 Query 錯誤”); while($row = mysql_fetch_array($result)){
echo $row[“name”],$row[“city”],$row[“stdnum”],$row[“address”] ;
echo ”
“; }
//新增
$myquery = “insert std (name,city,stdnum,address) values(“柯念珍”,”新竹縣”,”s20001″, “竹北市華興街129號”);
mysql_query($myquery) or die(“新增 Query 錯誤”);

//編修
$myquery = “update std set
name = “陳念惠”,
city = “桃園縣”
where id = ’10′”;
mysql_query($myquery) or die(“編修 Query 錯誤”);

//刪除
$myquery = “delete from std where id = ’10′”;
mysql_query($myquery) or die(“刪除 Query 錯誤”);
?>
資料來源:新竹縣網頁補給站