PHP手冊上提供了以下一些主要的mysql資料庫的支援函數:
mysql_affected_rows -- 取得前一次 MySQL 操作所影響的記錄行數
mysql_change_user -- 改變活動串連中登入的使用者
mysql_client_encoding -- 返回字元集的名稱
mysql_close -- 關閉 MySQL 串連
mysql_connect -- 開啟一個到 MySQL 伺服器的串連
mysql_create_db -- 建立一個 MySQL 資料庫
mysql_data_seek -- 移動內部結果的指標
mysql_db_name -- 取得結果資料
mysql_db_query -- 發送一條 MySQL 查詢
mysql_drop_db -- 丟棄(刪除)一個 MySQL 資料庫
mysql_errno -- 返回上一個 MySQL 操作中的錯誤資訊的數字編碼
mysql_error -- 返回上一個 MySQL 操作產生的文本錯誤資訊
mysql_escape_string -- 轉義一個字串用於 mysql_query
mysql_fetch_array -- 從結果集中取得一行作為關聯陣列,或數字數組,或二者兼有
mysql_fetch_assoc -- 從結果集中取得一行作為關聯陣列
mysql_fetch_field -- 從結果集中取得列資訊並作為對象返回
mysql_fetch_lengths -- 取得結果集中每個輸出的長度
mysql_fetch_object -- 從結果集中取得一行作為對象
mysql_fetch_row -- 從結果集中取得一行作為枚舉數組
mysql_field_flags -- 從結果中取得和指定欄位關聯的標誌
mysql_field_len -- 返回指定欄位的長度
mysql_field_name -- 取得結果中指定欄位的欄位名
mysql_field_seek -- 將結果集中的指標設定為制定的欄位位移量
mysql_field_table -- 取得指定欄位所在的表名
mysql_field_type -- 取得結果集中指定欄位的類型
mysql_free_result -- 釋放結果記憶體
mysql_get_client_info -- 取得 MySQL 用戶端資訊
mysql_get_host_info -- 取得 MySQL 主機資訊
mysql_get_proto_info -- 取得 MySQL 協議資訊
mysql_get_server_info -- 取得 MySQL 伺服器資訊
mysql_info -- 取得最近一條查詢的資訊
mysql_insert_id -- 取得上一步 INSERT 操作產生的 ID
mysql_list_dbs -- 列出 MySQL 伺服器中所有的資料庫
mysql_list_fields -- 列出 MySQL 結果中的欄位
mysql_list_processes -- 列出 MySQL 進程
mysql_list_tables -- 列出 MySQL 資料庫中的表
mysql_num_fields -- 取得結果集中欄位的數目
mysql_num_rows -- 取得結果集中行的數目
mysql_pconnect -- 開啟一個到 MySQL 伺服器的持久串連
mysql_ping -- Ping 一個伺服器串連,如果沒有串連則重新串連
mysql_query -- 發送一條 MySQL 查詢
mysql_real_escape_string -- 轉義 SQL 陳述式中使用的字串中的特殊字元,並考慮到串連的當前字元集
mysql_result -- 取得結果資料
mysql_select_db -- 選擇 MySQL 資料庫
mysql_stat -- 取得當前系統狀態
mysql_tablename -- 取得表名
mysql_thread_id -- 返回當前線程的 ID
mysql_unbuffered_query -- 向 MySQL 發送一條 SQL 查詢,並不擷取和緩衝結果的行
下面我們用一個 MySQL 例子來介紹一下其中幾個重要的函數:
<?php
// 串連,選擇資料庫
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
or die('Could not connect: ' . mysql_error());
echo 'Connected successfully';
mysql_select_db('my_database') or die('Could not select database');
// 執行 SQL 查詢
$query = 'SELECT * FROM my_table';
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
// 用 HTML 顯示結果
echo "<table>/n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "/t<tr>/n";
foreach ($line as $col_value) {
echo "/t/t<td>$col_value</td>/n";
}
echo "/t</tr>/n";
}
echo "</table>/n";
// 釋放結果集
mysql_free_result($result);
// 關閉串連
mysql_close($link);
?>
mysql_connect用於串連資料庫,第一個參數是mySQL資料庫所在主機的名稱或IP地址;第二、三個參數是登陸該資料庫的使用者名稱密碼。
mysql_select_db函數一般緊接著mysql_connect調用,作用是選擇一個資料庫作為資料來源,其參數是資料庫的名稱。
mysql_query函數執行資料查詢語言,也就是我們常用的SQL語言。
注意,跟JDBC不同的是,mysql_query函數即可能有傳回值,也可能沒有傳回值,我們是通過MySQL fetch 常量進行判斷的:
MYSQL_ASSOC: 返回的資料列使用欄位名作為數組的索引名。
MYSQL_BOTH: 返回的資料列使用欄位名及數字索引作為數組的索引名。
MYSQL_NUM: 返回的資料列使用數字索引作為數組的索引名。索引從 0 開始,表示返回結果的第一個欄位。
mysql_fetch_array函數返回查詢結果result的每一行,這裡我們用到了一個PHP foreach關鍵字,該關鍵字的作用是遍曆數組,本質上對數組line執行一個迴圈,每次迴圈中,當前單元的值被賦給 $col_value 並且數組內部的指標向前移一步(因此下一次迴圈中將會得到下一個單元)。
最後兩個函數mysql_free_result和mysql_close用例釋放SQL結果和關閉資料庫連接,這兩個函數的目的主要是為了減少對資料庫訪問的負載,大家不要忘了。