本函數庫供存取 MySQL 數據庫。有關 MySQL 的細節,及下載 MySQL 數據庫,請到這個網址 http://www.mysql.com 。而網絡上也有許多提供處理 MySQL 的用戶界面程序,建議到 http://www.phpwizard.net/phpMyAdmin 下載 phpMyAdmin,可以使用浏覽器操作及管理 MySQL。整套 phpMyAdmin 程序,是用 PHP3 完成的,亦可同時研究 PHP3 與 MySQL 的鏈接。
mysql_affected_rows: 得到 MySQL 最後操作影響的列數目。
mysql_close: 關閉 MySQL 服務器連接。
mysql_connect: 打開 MySQL 服務器連接。
mysql_create_db: 建立一個 MySQL 新數據庫。
mysql_data_seek: 移動內部返回指針。
mysql_db_query: 送查詢字符串 (query) 到 MySQL 數據庫。
mysql_drop_db: 移除數據庫。
mysql_errno: 返回錯誤信息代碼。
mysql_error: 返回錯誤信息。
mysql_fetch_array: 返回數組資料。
mysql_fetch_field: 取得字段信息。
mysql_fetch_lengths: 返回單列各欄資料最大長度。
mysql_fetch_object: 返回類資料。
mysql_fetch_row: 返回單列的各字段。
mysql_field_name: 返回指定字段的名稱。
mysql_field_seek: 配置指針到返回值的某字段。
mysql_field_table: 獲得目前字段的資料表 (table) 名稱。
mysql_field_type: 獲得目前字段的類型。
mysql_field_flags: 獲得目前字段的標志。
mysql_field_len: 獲得目前字段的長度。
mysql_free_result: 釋放返回占用內存。
mysql_insert_id: 返回最後一次使用 INSERT 指令的 ID。
mysql_list_fields: 列出指定資料表的字段 (field)。
mysql_list_dbs: 列出 MySQL 服務器可用的數據庫 (database)。
mysql_list_tables: 列出指定數據庫的資料表 (table)。
mysql_num_fields: 取得返回字段的數目。
mysql_num_rows: 取得返回列的數目。
mysql_pconnect: 打開 MySQL 服務器持續連接。
mysql_query: 送出一個 query 字符串。
mysql_result: 取得查詢 (query) 的結果。
mysql_select_db: 選擇一個數據庫。
mysql_tablename: 取得資料表名稱。
mysql_affected_rows
得到 MySQL 最後操作影響的列數目。
語法: int mysql_affected_rows(int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可得到 MySQL 最後查詢操作 INSERT、UPDATE 或 DELETE 所影響的列 (row) 數目。若最後的查詢 (query) 是使用 DELETE 而且沒有使用 WHERE 命令,則會刪除全部資料,本函數將返回 0。若最後使用的是 SELECT,則用本函數不會得到預期的數目,因為要改變 MySQL 數據庫本函數才有效,欲得到 SELECT 返回的數目需使用 mysql_num_rows() 函數。
mysql_close
關閉 MySQL 服務器連接。
語法: int mysql_close(int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數關閉與 MySQL 數據庫服務器的連接。若無指定參數 link_identifier 則會關閉最後的一筆連接。用 mysql_pconnect() 連接則無法使用本函數關閉。實際上本函數不是一定需要的,當 PHP 整頁程序結束後,將會自動關閉與數據庫的非永久性 (non-persistent) 連接。成功返回 true、失敗返回 false 值。
參考: mysql_connect() mysql_pconnect()
mysql_connect
打開 MySQL 服務器連接。
語法: int mysql_connect(string [hostname] [:port], string [username], string [password]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數建立與 MySQL 服務器的連接。其中所有的參數都可省略。當使用本函數卻不加任何參數時,參數 hostname 的默認值為 localhost、參數 username 的默認值為 PHP 執行行程的擁有者、參數 password 則為空字符串 (即沒有密碼)。而參數 hostname 後面可以加冒號與埠號,代表使用那個埠與 MySQL 連接。當然在使用數據庫時,早點使用 mysql_close() 將連接關掉可以節省資源。
使用范例
這是一位未具名網友提供的范例 (18-Feb-1999)
<?php
$dbh = mysql_connect('localhost:3306','mcclain','standard');
mysql_select_db('admreqs');
$query = "insert into requests(date, request, email, priority,status) values (NOW(),'$description', '$email', '$priority', 'NEW')";
$res = mysql_query($query, $dbh);
$query = "select max(id) from requests";
$res = mysql_query($query, $dbh);
$err = mysql_error();
if($err){
echo "發生錯誤,請通知<a href=mailto:
[email protected]>站長</a>";
}
$row = mysql_fetch_row($res);
echo "未來您使用的號碼為: ".$row[0];
?>
參考: mysql_close() mysql_pconnect()
mysql_create_db
建立一個 MySQL 新數據庫。
語法: int mysql_create_db(string database name, int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數用來建立新的數據庫 (database)。在建立前,必須先與服務器連接。
參考: mysql_drop_db()
mysql_data_seek
移動內部返回指針。
語法: int mysql_data_seek(int result_identifier, int row_number);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可移動內部返回的列指針到指定的 row_number 去。之後若使用 mysql_fetch_row() 可以返回新列的值。成功返回 true、失敗則返回 false。
mysql_db_query
送查詢字符串 (query) 到 MySQL 數據庫。
語法: int mysql_db_query(string database, string query, int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數用來送出查詢字符串 (query) 到後端的 MySQL 數據庫中。而可省略的參數 link_identifier 若不存在,程序會自動尋找其它 mysql_connect() 連接後的連接代碼。發生錯誤時會返回 false,其它沒錯誤時則返回它的返回代碼。
參考: mysql_connect()
mysql_drop_db
移除數據庫。
語法: int mysql_drop_db(string database_name, int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數移除已存在的數據庫。成功返回 true、失敗則返回 false。
參考: mysql_create_db()
mysql_errno
返回錯誤信息代碼。
語法: int mysql_errno(int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可以得到 MySQL 數據庫服務器的錯誤代碼。通常用在 PHP 網頁程序開發階段,作為 PHP 與 MySQL 的除錯用。
使用范例
<?php
mysql_connect("marliesle");
echo mysql_errno().": ".mysql_error()."<BR>";
mysql_select_db("nonexistentdb");
echo mysql_errno().": ".mysql_error()."<BR>";
$conn = mysql_query("SELECT * FROM nonexistenttable");
echo mysql_errno().": ".mysql_error()."<BR>";
?>
參考: mysql_error()
mysql_error
返回錯誤信息。
語法: string mysql_error(int [link_identifier]);
返回值: 字符串
函數種類: 數據庫功能
內容說明: 本函數可以得到 MySQL 數據庫服務器的錯誤信息。通常用在 PHP 網頁程序開發階段,與 mysql_errno() 一起作為PHP 與 MySQL 的除錯用。
參考: mysql_errno()
mysql_fetch_array
返回數組資料。
語法: 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
mysql_connect($host,$user,$password);
$result = mysql_db_query("database","select * from table");
while($row = mysql_fetch_array($result)) {
echo $row["user_id"];
echo $row["fullname"];
}
mysql_free_result($result);
?>
mysql_fetch_field
取得字段信息。
語法: object mysql_fetch_field(int result, int [field_offset]);
返回值: 類
函數種類: 數據庫功能
內容說明: 本函數返回的類資料為 result 的字段 (Column) 信息。返回類的屬性如下:
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 表示本字段為數字類型 (numeric)
blob - 若為 1 表示本字段為位類型 (BLOB)
type - 字段類型
unsigned - 若為 1 表示本字段為無記號 (unsigned)
zerofill - 若為 1 表示本字段為被零填滿 (zero-filled)
參考: mysql_field_seek()
mysql_fetch_lengths
返回單列各欄資料最大長度。
語法: array mysql_fetch_lengths(int result);
返回值: 數組
函數種類: 數據庫功能
內容說明: 本函數將 mysql_fetch_row() 處理過的最後一列資料的各字段資料最大長度放在數組變量之中。若執行失敗則返回 false 值。返回數組的第一筆資料索引值是 0。
參考: mysql_fetch_row()
mysql_fetch_object
返回類資料。
語法: object mysql_fetch_object(int result, int [result_typ]);
返回值: 類
函數種類: 數據庫功能
內容說明: 本函數用來將查詢結果 result 拆到類變量中。使用方法和 mysql_fetch_array() 幾乎相同,不同的地方在於本函數返回資料是類而不是數組。若 result 沒有資料,則返回 false 值。另外治募注意的地方是,取回的類資料的索引只能是文字而不能用數字,這是因為類的特性。類資料的特性中所有的屬性 (property) 名稱都不能是數字,因此只好乖乖使用文字字符串當索引了。參數 result_typ是一個常量值,有以下幾種常量 MYSQL_ASSOC、MYSQL_NUM 與 MYSQL_BOTH。關於速度方面,本函數的處理速度幾乎和 mysql_fetch_row() 及 mysql_fetch_array() 二函數差不多,要用哪個函數還是看使用的需求決定。
使用范例
下面的例子示范如使用返回的類。
<?php
mysql_connect($host,$user,$password);
$result = mysql_db_query("MyDatabase","select * from test");
while($row = mysql_fetch_object($result)) {
echo $row->user_id;
echo $row->fullname;
}
mysql_free_result($result);
?>
參考: mysql_fetch_array() mysql_fetch_row()
mysql_fetch_row
返回單列的各字段。
語法: array mysql_fetch_row(int result);
返回值: 數組
函數種類: 數據庫功能
內容說明: 本函數用來將查詢結果 result 之單列拆到數組變量中。數組的索引是數字索引,第一個的索引值是 0。若 result 沒有資料,則返回 false 值。
參考: mysql_fetch_array() mysql_fetch_object() mysql_data_seek() mysql_fetch_lengths() mysql_result()
mysql_field_name
返回指定字段的名稱。
語法: string mysql_field_name(int result, int field_index);
返回值: 字符串
函數種類: 數據庫功能
內容說明: 本函數用來取得指定字段的名稱。
使用范例
mysql_field_name($result,2);
mysql_field_seek
配置指針到返回治募某字段。
語法: int mysql_field_seek(int result, int field_offset);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數配置目前的指針到返回治募特定字段中。
參考: mysql_fetch_field()
mysql_field_table
獲得目前字段的資料表 (table) 名稱。
語法: string mysql_field_table(int result, int field_offset);
返回值: 字符串
函數種類: 數據庫功能
內容說明: 本函數可以得到目前所在字段的資料表名。
mysql_field_type
獲得目前字段的類型。
語法: string mysql_field_type(int result, int field_offset);
返回值: 字符串
函數種類: 數據庫功能
內容說明: 本函數可以得到目前所在字段的類型格式。返回的字符串為字段的類型,包括了 int、real、string、blob....等等,詳見 MySQL 的相關文件中有關於類型的部份。
使用范例
<?php
mysql_connect("localhost:3306");
mysql_select_db("wisconsin");
$result = mysql_query("SELECT * FROM onek");
$fields = mysql_num_fields($result);
$rows = mysql_num_rows($result);
$i = 0;
$table = mysql_field_table($result, $i);
echo "資料表 '".$table."' 有 ".$fields." 欄及 ".$rows." 列。<br>";
echo "本資料表的字段如下<br>";
while ($i < $fields) {
$type = mysql_field_type ($result, $i);
$name = mysql_field_name ($result, $i);
$len = mysql_field_len ($result, $i);
$flags = mysql_field_flags ($result, $i);
echo $type." ".$name." ".$len." ".$flags."<br>";
$i++;
}
mysql_close();
?>
mysql_field_flags
獲得目前字段的標志。
語法: string mysql_field_flags(int result, int field_offset);
返回值: 字符串
函數種類: 數據庫功能
內容說明: 本函數可以得到目前所在字段的標志。若一個字段有數種屬性標志,則返回的標志為這些屬性連起來的字符串,每個屬性都用空格隔開,可以使用 explode() 切開這些字符串。返回的標志可能是:not_null、primary_key、unique_key、multiple_key、blob、unsigned、zerofill、binary、enum、auto_increment、timestamp。
mysql_field_len
獲得目前字段的長度。
語法: int mysql_field_len(int result, int field_offset);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可以得到目前所在字段的長度。
mysql_free_result
釋放返回占用內存。
語法: boolean mysql_free_result(int result);
返回值: 布爾值
函數種類: 數據庫功能
內容說明: 本函數可以釋放目前 MySQL 數據庫 query 返回所占用的內存。一般只有在非常擔心在內存的使用上可能會不足的情形下才會用本函數。PHP 程序會在結束時自動釋放。
mysql_insert_id
返回最後一次使用 INSERT 指令的 ID。
語法: int mysql_insert_id(int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可以得到最後一次使用 INSERT 到 MySQL 數據庫的執行 ID。
[email protected] (13-May-1999) 指出在 PHP 3.0.7 版用 REPLACE 也和使用 INSERT 一樣,可以使用本函數獲得 ID。
mysql_list_fields
列出指定資料表的字段 (field)。
語法: int mysql_list_fields(string database_name, string table_name, int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可以得到指定的資料表的所有字段。返回的字段信息可以供 mysql_field_flags()、mysql_field_len()、mysql_field_name() 及 mysql_field_type() 等函數使用。若有錯誤則返回 -1。
mysql_list_dbs
列出 MySQL 服務器可用的數據庫 (database)。
語法: int mysql_list_dbs(int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可以得到 MySQL 服務器的可用數據庫。
mysql_list_tables
列出指定數據庫的資料表 (table)。
語法: int mysql_list_tables(string database, int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可以得到指定數據庫中的所有資料表名稱。
mysql_num_fields
取得返回字段的數目。
語法: int mysql_num_fields(int result);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可以得到返回字段的數目。
參考: mysql_db_query() mysql_query() mysql_fetch_field() mysql_num_rows()
mysql_num_rows
取得返回列的數目。
語法: int mysql_num_rows(int result);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數可以得到返回列的數目。
參考: mysql_db_query() mysql_query() mysql_fetch_row()
mysql_pconnect
打開 MySQL 服務器持續連接。
語法: int mysql_pconnect(string [hostname] [:port], string [username], string [password]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數和 mysql_connect() 雷同。不同的地方在於使用本函數打開數據庫時,程序會先尋找是否曾經執行過本函數,若執行過則返回先前執行的 ID。另一個不同的地方是本函數無法使用 mysql_close() 關閉數據庫。
mysql_query
送出一個 query 字符串。
語法: int mysql_query(string query, int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數送出 query 字符串供 MySQL 做相關的處理或者執行。若沒有指定 link_identifier 參數,則程序會自動尋找最近打開的 ID。當 query 查詢字符串是 UPDATE、INSERT 及 DELETE 時,返回的可能是 true 或者 false;查詢的字符串是 SELECT 則返回新的 ID 值。
[email protected] (09-Feb-1999) 指出,當返回 false 時,並不是執行成功但無返回值,而是查詢的字符串有錯誤。
參考: mysql_db_query() mysql_select_db() mysql_connect()
mysql_result
取得查詢 (query) 的結果。
語法: int mysql_result(int result, int row, mixed field);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數取得一格 query 的結果。參數 field 可以是字段名稱、順序或者是 FieldName.TableName 的格式。在返回資料量少時,可以使用本函數來處理。當數據庫大時,本函數的效率就有待考量了,這時可以使用較有效率的 mysql_fetch_row()、mysql_fetch_array() 及 mysql_fetch_object() 等函數。
mysql_select_db
選擇一個數據庫。
語法: int mysql_select_db(string database_name, int [link_identifier]);
返回值: 整數
函數種類: 數據庫功能
內容說明: 本函數選擇 MySQL 服務器中的數據庫以供之後的資料查詢作業 (query) 處理。成功返回 true,失敗則返回 false。
參考: mysql_connect() mysql_pconnect() mysql_query()
mysql_tablename
取得資料表名稱。
語法: string mysql_tablename(int result, int i);
返回值: 字符串
函數種類: 數據庫功能
內容說明: 本函數可取得資料表名稱字符串,一般配合 mysql_list_tables() 函數使用,取得該函返回的數字的名稱字符串。
使用范例
<?php
mysql_connect ("localhost:3306");
$result = mysql_list_tables ("wisconsin");
$i = 0;
while ($i < mysql_num_rows ($result)) {
$tb_names[$i] = mysql_tablename ($result, $i);
echo $tb_names[$i] . "<BR>";
$i++;
}
?>