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);

 

七、一個完整的例子

<?php    $link = mysql_pconnect("localhost", "learn", "learn123") or die("無法與MySQL建立連線");     mysql_select_db("std") or die("無法選擇std資料庫");    

  //顯示

     $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 "<br>";     }

  //新增

    $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 錯誤");  

?> 



引用 http://dyna.hcc.edu.tw/php5/basic/courses/class4_3.htm

留言

這個網誌中的熱門文章

超任 三國志3代,登入武將金手指

歐姆龍 HEM-7600T 評價,購買心得分享(打臉文)

年青人眼鏡評價(負評),辛酸血淚史分享文