PHP MySQL 函數-7.13PHP 參考手冊

閱讀 ?·? 發布日期 2019-06-29 08:49 ?·? admin

PHP MySQL 簡介

MySQL 函數允許您訪問 MySQL 數據庫服務器。

安裝

為了能夠順利的使用本類函數,必須在編譯 PHP 時添加對 MySQL 的支持。

編譯時,只要使用 --with-mysql[=DIR] 配置選項即可,其中可選的 [DIR] 指向 MySQL 的安裝目錄。

雖然本 MySQL 擴展庫兼容 MySQL 4.1.0 及其以后版本,但是它不支持這些版本提供的額外功能。要使用這些功能,請使用 MySQLi 擴展庫。

如果要同時安裝 mysql 擴展庫和 mysqli 擴展庫,必須使用同一個客戶端庫以避免任何沖突。

在 Linux 系統上安裝

PHP 4

默認開啟了 --with-mysql 選項。此默認行為可以用 --without-mysql 配置選項來禁止。如果啟用 MySQL 而不指定安裝目錄的話,PHP 將使用綁定的 MySQL 客戶端連接庫。

還有其它應用程序使用 MySQL(例如 auth-mysql)的用戶不要用綁定的庫,而要指定 MySQL 的安裝目錄,如這樣:--with-mysql=/path/to/mysql。這將強制 PHP 使用隨 MySQL 安裝的客戶端連接庫,就可以避免任何沖突。

PHP 5+

MySQL 默認未啟用,也沒有綁定的 MySQL 庫。使用 --with-mysql[=DIR] 配置選項來加入 MySQL 的支持。可以從 MySQL 下載頭文件和庫。

在 Windows 系統上安裝

PHP 4

PHP MySQL 擴展已經編譯入 PHP。

PHP 5+

MySQL 默認未啟用,因此必須在 php.ini 中激活 php_mysql.dll 動態連接庫。此外,PHP 還需要訪問 MySQL 客戶端連接庫。PHP 的 Windows 發行版包括了一個 libmysql.dll,為了讓 PHP 能和 MySQL 對話,此文件必須放在 Windows 的系統路徑 PATH 中。

要激活任何 PHP 擴展庫(例如 php_mysql.dll),PHP 指令 extension_dir 要被設為 PHP 擴展庫所在的目錄。PHP 5 下 extension_dir 取值的一個例子是 c:\php\ext。

注釋:如果啟動 web 服務器時出現類似如下的錯誤:"Unable to load dynamic library './php_mysql.dll'",這是因為系統找不到 php_mysql.dll 和 / 或 libmysql.dll。

Runtime 配置

MySQL 函數的行為受到 php.ini 中設置的影響。

MySQL 配置選項:

名稱 默認 描述 可更改
mysql.allow_persistent "1" 是否允許 MySQL 的持久連接。 PHP_INI_SYSTEM
mysql.max_persistent "-1" 每個進程中最大的持久連接數目。 PHP_INI_SYSTEM
mysql.max_links "-1" 每個進程中最大的連接數,包括持久連接。 PHP_INI_SYSTEM
mysql.trace_mode "0" 跟蹤模式。從 PHP 4.3.0 起可用。 PHP_INI_ALL
mysql.default_port NULL 指定默認連接數據庫的 TCP 端口號。 PHP_INI_ALL
mysql.default_socket NULL 默認的 socket 名稱。PHP 4.0.1起可用。 PHP_INI_ALL
mysql.default_host NULL 默認的服務器地址。不適用于SQL安全模式。 PHP_INI_ALL
mysql.default_user NULL 默認使用的用戶名。不適用于SQL安全模式。 PHP_INI_ALL
mysql.default_password NULL 默認使用的密碼。不適用于SQL安全模式。 PHP_INI_ALL
mysql.connect_timeout "60" 連接超時秒數。 PHP_INI_ALL

資源類型

在 MySQL 模塊中使用了兩種資源類型。第一種是數據庫的連接句柄,第二種是 SQL 查詢返回的結果集。

PHP MySQL 函數

PHP:指示支持該函數的最早的 PHP 版本。

函數 描述 PHP
mysql_affected_rows() 取得前一次 MySQL 操作所影響的記錄行數。 3
mysql_change_user() 不贊成。改變活動連接中登錄的用戶 3
mysql_client_encoding() 返回當前連接的字符集的名稱 4
mysql_close() 關閉非持久的 MySQL 連接。 3
mysql_connect() 打開非持久的 MySQL 連接。 3
mysql_create_db() 不贊成。新建 MySQL 數據庫。使用 mysql_query() 代替。 3
mysql_data_seek() 移動記錄指針。 3
mysql_db_name() 從對 mysql_list_dbs() 的調用返回數據庫名稱。 3
mysql_db_query()

不贊成。發送一條 MySQL 查詢。

使用 mysql_select_db() 和 mysql_query() 代替。

3
mysql_drop_db()

不贊成。丟棄(刪除)一個 MySQL 數據庫。

使用 mysql_query() 代替。

3
mysql_errno() 返回上一個 MySQL 操作中的錯誤信息的數字編碼。 3
mysql_error() 返回上一個 MySQL 操作產生的文本錯誤信息。 3
mysql_escape_string()

不贊成。轉義一個字符串用于 mysql_query。

使用 mysql_real_escape_string() 代替。

4
mysql_fetch_array() 從結果集中取得一行作為關聯數組,或數字數組,或二者兼有。 3
mysql_fetch_assoc() 從結果集中取得一行作為關聯數組。 4
mysql_fetch_field() 從結果集中取得列信息并作為對象返回。 3
mysql_fetch_lengths() 取得結果集中每個字段的內容的長度。 3
mysql_fetch_object() 從結果集中取得一行作為對象。 3
mysql_fetch_row() 從結果集中取得一行作為數字數組。 3
mysql_field_flags() 從結果中取得和指定字段關聯的標志。 3
mysql_field_len() 返回指定字段的長度。 3
mysql_field_name() 取得結果中指定字段的字段名。 3
mysql_field_seek() 將結果集中的指針設定為指定的字段偏移量。 3
mysql_field_table() 取得指定字段所在的表名。 3
mysql_field_type() 取得結果集中指定字段的類型。 3
mysql_free_result() 釋放結果內存。 3
mysql_get_client_info() 取得 MySQL 客戶端信息。 4
mysql_get_host_info() 取得 MySQL 主機信息。 4
mysql_get_proto_info() 取得 MySQL 協議信息。 4
mysql_get_server_info() 取得 MySQL 服務器信息。 4
mysql_info() 取得最近一條查詢的信息。 4
mysql_insert_id() 取得上一步 INSERT 操作產生的 ID。 3
mysql_list_dbs() 列出 MySQL 服務器中所有的數據庫。 3
mysql_list_fields()

不贊成。列出 MySQL 結果中的字段。

使用 mysql_query() 代替。

3
mysql_list_processes() 列出 MySQL 進程。 4
mysql_list_tables()

不贊成。列出 MySQL 數據庫中的表。

使用Use mysql_query() 代替。

3
mysql_num_fields() 取得結果集中字段的數目。 3
mysql_num_rows() 取得結果集中行的數目。 3
mysql_pconnect() 打開一個到 MySQL 服務器的持久連接。 3
mysql_ping() Ping 一個服務器連接,如果沒有連接則重新連接。 4
mysql_query() 發送一條 MySQL 查詢。 3
mysql_real_escape_string() 轉義 SQL 語句中使用的字符串中的特殊字符。 4
mysql_result() 取得結果數據。 3
mysql_select_db() 選擇 MySQL 數據庫。 3
mysql_stat() 取得當前系統狀態。 4
mysql_tablename() 不贊成。取得表名。使用 mysql_query() 代替。 3
mysql_thread_id() 返回當前線程的 ID。 4
mysql_unbuffered_query() 向 MySQL 發送一條 SQL 查詢(不獲取 / 緩存結果)。 4

PHP MySQL 常量

在 PHP 4.3.0 以后的版本中,允許在 mysql_connect() 函數和 mysql_pconnect() 函數中指定更多的客戶端標記:

PHP:指示支持該常量的最早的 PHP 版本。

常量 描述 PHP
MYSQL_CLIENT_COMPRESS 使用壓縮的通訊協議。 4.3
MYSQL_CLIENT_IGNORE_SPACE 允許在函數名后留空格位。 4.3
MYSQL_CLIENT_INTERACTIVE 在關閉連接前所允許的交互超時非活動時間。 4.3
MYSQL_CLIENT_SSL 使用 SSL 加密(僅在 MySQL 客戶端庫版本為 4+ 時可用)。 4.3

mysql_fetch_array() 函數使用一個常量來表示所返回數組的類型:

常量 描述 PHP
MYSQL_ASSOC 返回的數據列使用字段名作為數組的索引名。  
MYSQL_BOTH 返回的數據列使用字段名及數字索引作為數組的索引名。  
MYSQL_NUM

返回的數據列使用數字索引作為數組的索引名。

索引從 0 開始,表示返回結果的第一個字段。