PHP 中的MySQL處理函數

 在PHP函數庫中,有數十種專爲處理MySQL數據庫所開發的函數,詳細的說明可在這個位置:http://www.php.net/manual/en/ref.mysql.php查詢。在此對一些常用的函數進行簡要的說明。

1  連接與查詢

功能

建立數據庫連接

函數名稱

Mysql_connect() 或 mysql_pconnect()

傳入參數

[string SERVER [, string USERNAME [, string PASSWORD [, bool NEW_LINK [, int CLIENT_FLAGS]]]]]

返回參數

建立完成的數據庫連接

續表

功能

建立數據庫連接

範例

$link = mysql_connect('localhost', 'root', '123456');

說明

創建一MySQL服務器連接。若使用 mysql_pconnect() ,則可以創建一個持續性的連接(persistent connection)。

其中所有的參數都可以省略。

當不加任何參數時,SERVER 的默認值爲 localhost,USERNAME 的默認值爲 PHP 執行程序的擁有者,PASSWORD 則爲空字符串。而 SERVER 後方還可以加上冒號與端口號,代表使用哪個端口與 MySQL 連接,如果不特別指定,均使用默認端口3306。

功能

選用數據庫

函數名稱

mysql_select_db()

傳入參數

string DATABASE_NAME [, resource LINK_IDENTIFIER]

返回參數

 

範例

mysql_select_db('db');

說明

此函數用來選定欲訪問的數據庫。當 LINK_IDENTIFIER 參數被省略時,默認使用最近一次已建立的 connection;若沒有任何已建立的 connection 可供利用,則會自動執行未加參數的 mysql_connect(),試圖自行創建新的 connection。

另外,亦可使用mysql_query()函數達到相同效果,如:mysql_query('use db');

功能

新建數據庫

函數名稱

mysql_create_db ()

傳入參數

string DATABASE_NAME

返回參數

 

範例

mysql_create_db('db');

說明

此函數可創建一新數據庫,數據庫名稱爲傳入參數。

功能

執行查詢

函數名稱

mysql_query()

傳入參數

string QUERY [, resource LINK_IDENTIFIER [, int RESULT_MODE]]

返回參數

 

續表

功能

執行查詢

範例

mysql_query('select * from zip');

說明

本函數用來提交任何標準的SQL查詢字符串給MySQL處理。若未指定 LINK_IDENTIFIER參數,則會使用最近一次已建立的connection。

而當所執行的是 SELECT、SHOW、EXPLAIN 或 DESCRIBE 語句時,將返回一個 resource identifier,執行失敗時返回FALSE。執行其他SQL語句時,成功返回TRUE,否則返回FALSE。

功能

釋放存儲器

函數名稱

mysql_free_result ()

傳入參數

resource RESULT

返回參數

 

範例

mysql_free_result($result);

說明

釋放 $RESULT 所佔用的存儲器

功能

關閉連接

函數名稱

Mysql_close ()

傳入參數

[resource LINK_IDENTIFIER]

返回參數

 

範例

Mysql_close ($link);

說明

關閉由mysql_connect()所創建的MySQL服務器連接。

一般而言,當程序結束之後,由 mysql_connect()所建立的連接會自動中斷,這個函數是用不着的。但是將數據取出之後,程序還要對它們進行耗時又複雜的運算處理。建議先退出數據庫的連接,以減輕MySQL的負擔。

2  分析、計算與統計

功能

計算返回結果中的數據條數

函數名稱

mysql_num_rows

傳入參數

Resource RESULT

返回參數

數據條數

範例

mysql_num_rows ($result);

功能

移動數據記錄指針

函數名稱

mysql_data_seek ()

傳入參數

esource RESULT_IDENTIFIER, int ROW_NUMBER

返回參數

 

範例

mysql_data_seek($result, 6);

說明

將RESULT_IDENTIFIER的數據記錄指針移到第 ROW_NUMBER個 row 去。以範例而言,便是將數據記錄指針移動到第六行。

功能

分析返回內容,並提取單條數據

函數名稱

mysql_fetch_row ()

傳入參數

resource 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 ......

}

說明

搭配循環的使用,這個函數可以從RESULT中將數據以一維數組的方式分行提取出來。

功能

分析數組內容

函數名稱

mysql_fetch_array ()

傳入參數

resource result [, int result_type]

返回參數

 

範例

用法一:(使用字段編號分析)

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {

printf("ID: %s  Name: %s", $row[0], $row[1]);

}

用法二:(使用字段名稱分析)

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {

printf("ID: %s  Name: %s", $row["id"], $row["name"]);

}

用法三:(同時使用字段編號與名稱分析)

while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {

printf ("ID: %s  Name: %s", $row[0], $row["name"]);

}

說明

分析每一行$row中的各個字段內容。

可使用三種分析方式,分別爲:

MYSQL_NUM:使用字段編號分析

MYSQL_ASSOC:使用字段名稱分析

MYSQL_BOTH:同時使用字段編號與名稱分析

功能

分析對象內容

函數名稱

Mysql_fetch_object ()

傳入參數

resource result [, int result_type]

返回參數

 

範例

$result = mysql_query("select * from mytable");

while ($row = mysql_fetch_object($result)) {

echo $row->user_id;

echo $row->fullname;

}

說明

mysql_fetch_object ()類似於mysql_fetch_array ()

唯一不同之處在於mysql_fetch_object ()僅能使用字段名稱進行分析,不能使用字段編號或使用同時使用字段編號與名稱進行分析。

功能

分析表頭內容

函數名稱

mysql_fetch_field ()

傳入參數

resource result [, int fieldnum]

返回參數        

 

範例

while ($i < mysql_num_fields($result)) {

    echo "Information for column $i:<br />/n";

    $row = mysql_fetch_field($result, $i);

    if (!$row) {

        echo "No information available<br />/n";

    }

    echo "<pre>

    blob:         $row->blob

    max_length:   $row->max_length

    multiple_key: $row->multiple_key

    name:         $row->name

    not_null:     $row->not_null

    numeric:      $row->numeric

    primary_key:  $row->primary_key

    table:        $row->table

    type:         $row->type

    unique_key:   $row->unique_key

    unsigned:     $row->unsigned

    zerofill:     $row->zerofill

    </pre>";

    $i++;

}

說明

分析表頭字段信息,信息類型共有12種,包括名稱、長度、類型等,說明如下:

    name – 字段名稱

    table – 這個字段所屬表格名稱

    max_length - 這個字段最大長度

    not_null - 如果是1則表示此字段不可爲 NULL

    primary_key - 如果是1則表示此字段爲 primary key

    unique_key - 如果是1則表示此字段爲 unique key

    multiple_key - 如果是1則表示此字段爲 non-unique key

    numeric - 如果是1則表示此字段爲數字類型

    blob - 如果是1則表示此字段爲 BLOB 類型

    type - 這個字段的類型

    unsigned -如果是1則表示此字段爲unsigned 類型

    zerofill -如果是1則表示此字段爲zero-filled

功能

檢測自動生成的值

函數名稱

Mysql_insert_id ()

傳入參數

[resource LINK_IDENTIFIER]

返回參數

 

範例

$ID = mysql_insert_id($link);

說明

假如您將某個字段的類型設爲AUTO_INCREMENT,使用本函數將可以得知在 INSERT 語句被執行時,MySQL 自動爲該字段創建的值爲何。

功能

檢測所影響的數組數量

函數名稱

mysql_affected_rows ()

傳入參數

[resource LINK_IDENTIFIER]

返回參數

 

範例

$num_rows = mysql_affected_rows($link);

說明

取得最近一次通過LINK_IDENTIFIER,在 MySQL上執行INSERT、UPDATE或DELETE 所影響的行(row)數。若執行的是不含WHERE的DELETE語句,則會刪除全部數據,但本函數的返回值將是0。

由於執行UPDATE時,新值與舊值相同的數據列不會被更新,所以 mysql_affected_rows( )函數的返回值,不一定就是查詢條件所符合的數據條數。

3   顯示系統信息

功能

列出系統內所有數據庫名稱

函數名稱

mysql_list_dbs ()

傳入參數

$link

返回參數

 

範例

$db_list = mysql_list_dbs($link);

while ($row = mysql_fetch_object($db_list)) {

echo $row->Database . "/n";

}

說明

顯示系統內所有的數據庫名稱

功能

列出某一數據庫內所有數據表名稱

函數名稱

Mysql_list_tables ()

傳入參數

$dbname

返回參數

 

範例

$result = mysql_list_tables($dbname);

 

while ($row = mysql_fetch_row($result)) {

echo "Table: $row[0]/n";

}

說明

列出某一數據庫內所有數據表數據

功能

列出某數據表內所有字段名稱

函數名稱

Mysql_list_fields ()

傳入參數

$dbname,$tablename,$link

返回參數

 

範例

$fields = mysql_list_fields("database1", "table1", $link);

$columns = mysql_num_fields($fields);

for ($i = 0; $i < $columns; $i++) {

echo mysql_field_name($fields, $i) . "/n";

}

說明

列出某數據表內所有數據字段名稱。

在瞭解如何用PHP連接MySQL,執行SQL指令並使用返回的數據,同時也對PHP所提供的MySQL函數有進一步的瞭解之後,接下來便是通過範例來增強使用上的熟悉程度,請見下一節:PHP與MySQL操作範例。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章