PHP5&MySQL 程式設計 第 13 章存取 My SQL 資料庫
13-1 PHP 與 MySQL 資料庫 PHP 提供了數十個函式供我們存取 MySQL 資料庫, 包括 : mysql_affected_rows() mysql_client_encoding() mysql_close() mysql_connect() mysql_create_db() mysql_data_seek() mysql_db_name() mysql_db_query() mysql_drop_db() mysql_errno()
mysql_error() mysql_fetch_array() mysql_fetch_assoc() mysql_fetch_field() mysql_fetch_object() mysql_fetch_row() mysql_field_len() mysql_field_name() mysql_field_seek() mysql_field_table() mysql_field_type() mysql_free_result() mysql_get_client_info()
mysql_get_host_info() mysql_get_proto_info() mysql_get_server_info() mysql_list_dbs() mysql_list_fields() mysql_list_tables() mysql_num_fields() mysql_num_rows() mysql_pconnect() mysql_query() mysql_result() mysql_select_db()
13-2 建立與關閉資料連接 13-2-1 建立資料連接 一 使用 mysql_connect() 函式建立資料連接 我們可以使用 mysql_connect() 函式建立資料連接, 其語法如下 : mysql_connect([string server [, string username [, string password [, bool new_link]]]])
二 使用 mysql_pconnect() 函式建立永久資料連接 除了 mysql_connect() 函式之外, 您也可以選擇使用 mysql_pconnect() 函式建立永久資料連接, 其語法如下 : mysql_pconnect([string server [, string username [, string password]]])
13-2-2 關閉資料連接 mysql_close([resource link_identifier])
13-3 操作 MySQL 資料庫伺服器 13-3-1 取得預設字集名稱 mysql_client_encoding([resource link_identifier])
13-3-2 取得 MySQL 用戶端函式 mysql_get_client_info() 庫的版本資訊
13-3-3 取得 MySQL 主機的相 關資訊 mysql_get_host_info([resource link_identifier])
13-3-4 取得 MySQL 資料庫協定 的版本資訊 mysql_get_proto_info([resource link_identifier])
13-3-5 取得 MySQL 資料庫伺服 器的版本資訊 mysql_get_server_info([resource link_identifier])
13-3-6 建立資料庫 mysql_create_db(string database_name [, resource link_identifier])
13-3-7 刪除資料庫 mysql_drop_db(string database_name [, resource link_identifier])
13-3-8 取得操作 MySQL 資料庫 伺服器的錯誤訊息 mysql_errno([resource link_identifier]) mysql_error([resource link_identifier])
13-4 執行 SQL 命令 13-4-1 開啟資料庫 mysql_select_db( string database_name [, resource link_identifier])
13-4-2 執行 SQL 命令 使用 mysql_query() 函式執行 SQL 命令 mysql_query(string query [, resource 使用 mysql_db_query() 使用 [, resource link_identifier]) () 函式執行 SQL 命令 mysql_db_query(string database_name link_identifier]) database_name,, string query [, resource
13-4-3 取得執行 SQL 命令被影 響的記錄數或欄位數 mysql_num_rows() 函式 : 適用於執行 SELECT 陳述式, 可以傳回被篩選出來的記錄數, 其語法如下, 參數 result 為資源識別字 (resource identifier): mysql_num_rows(resource result) mysql_num_fields() 函式 : 適用於執行 SELECT 陳述式, 可以傳回被篩選出來的欄位數, 其語法如下, 參數 result 為資源識別字 (resource identifier): mysql_num_fields(resource result) mysql_affected_rows() 函式 : 適用於執行 INSERT UPDATE DELETE 陳述式, 可以傳回有多少筆記錄受到該陳述式的影響, 其語法如下, 參數 link_identifier 為連接識別字 (link identifier): mysql_affected_rows([resource link_identifier])
13-5 取得欄位資訊 13-5-1 使用 mysql_fetch_field() 函式取得欄位資訊 mysql_fetch_field(resource result [, int field_offset]) mysql_fetch_field() 函式的傳回值為 object 型別, 包含下列屬性 : name table max_length not_null primary_key unique_key multiple_key numeric blob type unsigned zerofill
舉例來說, 假設要取得第 2 個欄位資訊, 可以寫成如下 : $meta = mysql_fetch_field($result, 1); 假設要取得第 2 個欄位資訊並顯示其欄位名稱及資料型態, 可以寫成如下 : $meta = mysql_fetch_field($result, 1); echo " 欄位名稱 :": ". $meta->name; echo " 資料型態 :": ". $meta->type;
13-5-2 使用其它函式取得欄位資訊 PHP 還提供了下列函式, 讓我們取得欄位資訊 : mysql_field_name mysql_field_type mysql_field_len mysql_field_table 這四個函式均有兩個參數 : 參數 result: : 這是資源識別字 參數 field_offset: : 這是欄位的序號,0, 表示第一個欄位,1, 表示第二個欄位, 依此類推
13-5-3 移動欄位指標 mysql_field_seek() 函式讓我們可以輕鬆地移動欄位指標, 其語法如下 : mysql_field_seek(resource result,, int field_offset) 參數 result: : 這是資源識別字 參數 field_offset: : 這是欄位的序號,0, 表示第一個欄位,1, 表示第二個欄位, 依此類推 例如 : $meta = mysql_fetch_field($result, 1); $seek_result = mysql_field_seek($result, 4); $meta = mysql_fetch_field($result);
13-6 取得記錄內容 13-6-1 使用 mysql_result() 函式取得記錄內容 mysql_result() 函式一次可以取得一個欄位內容, 其語法如下 : mysql_result(resource result,, int row [, mixed field]) 參數 result 參數 row 參數 field 例如 : mysql_result($result, 2, 1); mysql_result($result, 2, "category"); 查詢結果所包含的記錄會佔用伺服器的記憶體, 雖然在所有程式碼執行完畢後會自動釋放佔用的記憶體, 但我們建議您, 可以在適當的時候使用 mysql_free_result() 函式釋放記憶體, 語法如下, 參數 result 為資源識別字 : mysql_free_result(resource result)
13-6-2 使用 mysql_db_name() 函式取得記錄內容 mysql_db_name() 函式一次可以取得一個欄位內容, 語法如下 : mysql_db_name(resource result,, int row [, mixed field]) 參數 result 參數 row 參數 field 例如 : mysql_db_name($result, 2, 1); mysql_db_name($result, 2, "category"); 查詢結果所包含的記錄會佔用伺服器的記憶體, 雖然在所有程式碼執行完畢後會自動釋放佔用的記憶體, 但我們建議您, 可以在適當的時候使用 mysql_free_result() 函式釋放記憶體, 語法如下, 參數 result 為資源識別字 : mysql_free_result(resource result)
13-6-3 使用 mysql_fetch_row() 函式取得記錄內容 PHP 提供的 mysql_fetch_row() 函式可以用來讀取一筆記錄, 然後將記錄指標移到下一筆, 倘若讀不到記錄, 就傳回 FALSE,, 其語法如下 : mysql_fetch_row(resource result) 例如 : $row1 = mysql_fetch_row($result); $row2 = mysql_fetch_row($result); $row3 = mysql_fetch_row($result); $row4 = mysql_fetch_row($result); $row5 = mysql_fetch_row($result); echo $row2[2]; echo $row3[0];
13-6-4 使用 mysql_fetch_array() 函式取得記錄內容 mysql_fetch_array() 函式的用途和 mysql_fetch_row() 函式一樣, 都是用來讀取記錄並存放在陣列, 然後將記錄指標移到下一筆, 倘若讀不到記錄, 就傳回 FALSE,, 不同之處在於取得欄位內容時,mysql_fetch_row(), 函式是以欄位序號取得欄位內容, 而 mysql_fetch_array() 函式則可以使用欄位序號或欄位名稱取得欄位內容 mysql_fetch_array(resource result [, int result_type]) 參數 result: : 這是資源識別字 參數 result_type: : 用來指定取得欄位內容的方式, 參數值有 MYSQL_NUM MYSQL_ASSOC MYSQL_BOTH
13-6-5 使用 mysql_fetch_assoc() 函式取得記錄內容 mysql_fetch_ assoc() 函式和 mysql_fetch_array() 函式一樣, 都是用來讀取記錄內容並存放在陣列, 然後將記錄指標移到下一筆, 其語法如下, 參數 result 為資源識別字 : mysql_fetch_assoc(resource result)
13-6-6 使用 mysql_fetch_object() 函式取得記錄內容 mysql_fetch_object() 函式和 mysql_fetch_array() 函式一樣, 都是用來讀取記錄內容, 然後將記錄指標移到下一筆, 倘若讀不到記錄, 會傳回 FALSE,, 其語法如下, 參數 result 為資源識別字 : mysql_fetch_assoc(resource result) 由於 mysql_fetch_object() 函式的傳回值為 object 型別, 記錄的每個欄位都會變成該物件的屬性, 所以在讀取欄位內容時, 只能使用欄位名稱
13-6-7 移動記錄指標 PHP 提供了 mysql_data_seek() 函式, 讓我們可以輕鬆地移動記錄指標, 其語法如下 : mysql_data_seek(resource result,, int row_number) 參數 result: : 這是資源識別字 參數 row_number: : 這是記錄的序號,0, 表示第一筆記錄,1, 表示第二筆記錄, 依此類推 例如 $row = mysql_fetch_row($result); $seek_result = mysql_data_seek($result, 9); $row = mysql_fetch_row($result);
13-7 其它功能 13-7-1 取得資料庫清單如果想知道 MySQL 資料庫伺服器包含哪些資料庫, 可以使用 mysql_list_dbs() 函式, 其語法如下, 參數 link_identifier 為連接識別字 : mysql_list_dbs([resource link_identifier]) 這個函式的傳回值為資源識別字, 裡面包含一個名稱為 Database 的欄位, 記錄數取決於資料庫的數目
13-7-2 取得資料表清單 如果想知道某特定資料庫包含哪些資料表, 可以使用 mysql_list_tables() 函式, 其語法如下, 參數 database_name 為資料庫名稱, 參數 link_identifier 為連接識別字 : mysql_list_tables(string database_name [, resource link_identifier]) 這個函式的傳回值為資源識別字, 裡面包含一個名稱為 Tables_in_ 資料庫名稱 的欄位, 記錄數取決於資料表的數目
13-7-3 取得欄位清單 如果想知道某特定資料表包含哪些欄位, 可以使用 mysql_list_fields() 函式, 其語法如下, 參數 database_name 為資料庫名稱, 參數 table_name 為資料表名稱, 參數 link_identifier 為連接識別字 : mysql_list_fields(string database_name,, string table_name [, resource link_identifier]) 這個函式的傳回值為資源識別字, 裡面包含所有欄位,0, 筆記錄
13-8 分頁瀏覽