PHP8 PDO_MYSQL

2024-03-26 09:50 更新

簡(jiǎn)介 

PDO_MYSQL 是實(shí)現(xiàn) PHP 的驅(qū)動(dòng)程序 數(shù)據(jù)對(duì)象 (PDO) 接口,用于啟用從 PHP 到 MySQL 數(shù)據(jù)庫的訪問。

默認(rèn)情況下,PDO_MYSQL使用模擬準(zhǔn)備。

MySQL 8的

運(yùn)行 7.1.16 之前的 PHP 版本或 7.2.4 之前的 PHP 版本時(shí),請(qǐng)將 MySQL 8 Server的默認(rèn)密碼插件mysql_native_password否則,即使不使用caching_sha2_password,您也會(huì)看到類似于The server requested authentication method unknown to the client [caching_sha2_password]的錯(cuò)誤。

這是因?yàn)?MySQL 8 默認(rèn)為 caching_sha2_password,這是一個(gè)插件 舊版 PHP (mysqlnd) 無法識(shí)別。相反,請(qǐng)將其更改為 設(shè)置在 中。從 PHP 7.4.4 開始完全支持 caching_sha2_password 插件。對(duì)于較舊的版本,mysql_xdevapi擴(kuò)展可以 支持它。default_authentication_plugin=mysql_native_passwordmy.cnf

警告

注意:某些MySQL表類型(存儲(chǔ)引擎)不支持事務(wù)。什么時(shí)候 使用不支持的表類型編寫事務(wù)數(shù)據(jù)庫代碼 事務(wù),MySQL會(huì)假裝事務(wù)啟動(dòng)成功。 此外,任何發(fā)出的 DDL 查詢都會(huì)隱式地 提交任何待處理事務(wù)。

注意:MySQL 驅(qū)動(dòng)程序無法通過 PDOStatement::bindParam() 正確支持 PDO::P ARAM_INPUT_OUTPUT;雖然可以使用這樣的參數(shù), 它們不會(huì)更新(即忽略實(shí)際輸出)。

安裝 

常見的 Unix 發(fā)行版包括 PHP 的二進(jìn)制版本,可以 安裝。盡管這些二進(jìn)制版本通常使用 支持MySQL擴(kuò)展,擴(kuò)展庫 它們本身可能需要使用額外的軟件包進(jìn)行安裝。檢查 所選發(fā)行版附帶的包管理器 可用性。

例如,在 Ubuntu 上,軟件包安裝 ext/mysql、ext/mysqli 和 PDO_MYSQL PHP 擴(kuò)展。在 CentOS 上, 該軟件包還安裝了這三個(gè) PHP 擴(kuò)展。php5-mysqlphp-mysql

或者,您可以自己編譯此擴(kuò)展。構(gòu)建 PHP source 還允許您指定要使用的 MySQL 擴(kuò)展 作為每個(gè)擴(kuò)展的客戶端庫選擇。

編譯時(shí),使用 --with-pdo-mysql[=DIR] 安裝 PDO MySQL 擴(kuò)展,其中可選的是 MySQL 基本庫。Mysqlnd 是默認(rèn)庫。有關(guān)選擇庫的詳細(xì)信息,請(qǐng)參閱選擇 MySQL 庫。[=DIR]

(可選)--with-mysql-sock[=DIR] 設(shè)置為 location 到所有 MySQL 擴(kuò)展(包括 PDO_MYSQL)的 MySQL unix 套接字指針。如果 未指定,則搜索默認(rèn)位置。

或者,--with-zlib-dir[=DIR] 用于設(shè)置 libz 安裝前綴的路徑。

$ ./configure --with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock

使用適當(dāng)?shù)?nbsp;PDO_MySQL 常量啟用 SSL 支持, 這相當(dāng)于調(diào)用 ? MySQL C API 函數(shù) mysql_ssl_set()。 此外,無法使用 PDO::setAttribute 啟用 SSL,因?yàn)檫B接 已存在。另請(qǐng)參閱有關(guān) ? 連接到 帶有SSL的MySQL。

預(yù)定義常量 

下列常量由此驅(qū)動(dòng)定義,且僅在擴(kuò)展編譯入 PHP 或在運(yùn)行時(shí)動(dòng)態(tài)載入時(shí)可用。 另外,使用此驅(qū)動(dòng)時(shí),僅會(huì)使用這些驅(qū)動(dòng)特定的常量。 使用其他驅(qū)動(dòng)的驅(qū)動(dòng)特定的常量可能會(huì)導(dǎo)致不可預(yù)見的情況。 如果代碼可運(yùn)行于多個(gè)驅(qū)動(dòng),PDO::getAttribute() 可被用于獲取 PDO_ATTR_DRIVER_NAME 屬性以檢查驅(qū)動(dòng)。

PDO::MYSQL_ATTR_USE_BUFFERED_QUERY (bool)
默認(rèn)情況下,所有語句都在緩沖模式下執(zhí)行。 如果此屬性在 PDO 對(duì)象上設(shè)置為 false,則 MySQL 驅(qū)動(dòng)程序?qū)⑹褂?無緩沖模式。

示例 #1 設(shè)置MySQL無緩沖模式

<?php
$pdo = new PDO("mysql:host=localhost;dbname=world", 'my_user', 'my_password');
$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);

$unbufferedResult = $pdo->query("SELECT Name FROM City");
foreach ($unbufferedResult as $row) {
echo $row['Name'] . PHP_EOL;
}
?>
PDO::MYSQL_ATTR_LOCAL_INFILE (int)

使。LOAD LOCAL INFILE

請(qǐng)注意,此常量只能在構(gòu)造新的數(shù)據(jù)庫句柄時(shí)在數(shù)組中使用。driver_options

PDO::MYSQL_ATTR_LOCAL_INFILE_DIRECTORY (字符串)

允許將 LOCAL DATA 加載限制為位于此指定的文件中 目錄。從 PHP 8.1.0 開始可用。

請(qǐng)注意,此常量只能在構(gòu)造新的數(shù)據(jù)庫句柄時(shí)在數(shù)組中使用。driver_options

PDO::MYSQL_ATTR_INIT_COMMAND (字符串)

連接到MySQL服務(wù)器時(shí)要執(zhí)行的命令。將 重新連接時(shí)自動(dòng)重新執(zhí)行。

請(qǐng)注意,此常量只能在構(gòu)造新的數(shù)據(jù)庫句柄時(shí)在數(shù)組中使用。driver_options

PDO::MYSQL_ATTR_READ_DEFAULT_FILE (int)

從命名選項(xiàng)文件中讀取選項(xiàng),而不是從 中讀取選項(xiàng)。如果出現(xiàn)以下情況,則此選項(xiàng)不可用 使用 mysqlnd,因?yàn)?mysqlnd 不讀取 mysql 配置文件。my.cnf

PDO::MYSQL_ATTR_READ_DEFAULT_GROUP (int)

從命名組中讀取選項(xiàng) from 或 用 MYSQL_READ_DEFAULT_FILE 指定的文件。此選項(xiàng) 如果使用 mysqlnd,則不可用,因?yàn)?mysqlnd 不讀取 mysql 配置文件。my.cnf

PDO::MYSQL_ATTR_MAX_BUFFER_SIZE (int)

最大緩沖區(qū)大小。默認(rèn)值為 1 MiB。當(dāng)以下情況下,不支持此常量 針對(duì) mysqlnd 編譯。

PDO::MYSQL_ATTR_DIRECT_QUERY (int)

執(zhí)行直接查詢,不要使用預(yù)準(zhǔn)備的語句。

PDO::MYSQL_ATTR_FOUND_ROWS (int)

返回找到的(匹配的)行數(shù),而不是 更改的行數(shù)。

PDO::MYSQL_ATTR_IGNORE_SPACE (int)

允許在函數(shù)名稱后有空格。使所有功能 名稱保留字。

PDO::MYSQL_ATTR_COMPRESS (int)

啟用網(wǎng)絡(luò)通信壓縮。

PDO::MYSQL_ATTR_SSL_CA (int)

SSL 證書頒發(fā)機(jī)構(gòu)的文件路徑。

PTO::MyScle_Adr_SSL_Cabath (整數(shù)))

包含受信任 SSL 的目錄的文件路徑 CA 證書,以 PEM 格式存儲(chǔ)。

PDO::MYSQL_ATTR_SSL_CERT (整數(shù))

SSL 證書的文件路徑。

PDO::MYSQL_ATTR_SSL_CIPHER (int)

用于 SSL 加密的一個(gè)或多個(gè)允許的密碼的列表,格式如下 被 OpenSSL 理解。例如:DHE-RSA-AES256-SHA:AES128-SHA

PDO::MYSQL_ATTR_SSL_KEY (整數(shù))

The file path to the SSL key.

PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT (int)

Provides a way to disable verification of the server SSL certificate. This option is available only with mysqlnd.

自以下版本起 PHP 7.0.18 and PHP 7.1.4.

PDO::MYSQL_ATTR_MULTI_STATEMENTS (int)

Disables multi query execution in both PDO::prepare() and PDO::query() when set to false.

Note, this constant can only be used in the array when constructing a new database handle. driver_options

運(yùn)行時(shí)配置 

這些函數(shù)的行為受 中的設(shè)置影響。 php.ini

PDO_MYSQL配置選項(xiàng)
名字默認(rèn)可修改范圍
pdo_mysql.default_socket“/tmp/mysql.sock”INI_SYSTEM
pdo_mysql.調(diào)試INI_SYSTEM

有關(guān) INI_* 樣式的更多詳情與定義,見

 

配置可被設(shè)定范圍

。

這是配置指令的簡(jiǎn)短說明。

pdo_mysql.default_socket 字符串

設(shè)置 Unix 域套接字。如果出現(xiàn)以下情況,則可以在編譯時(shí)設(shè)置此值 在 Configure 中找到域套接字。此 ini 設(shè)置僅適用于 Unix。

pdo_mysql.debug 布爾

啟用PDO_MYSQL的調(diào)試。此設(shè)置僅在以下情況下可用PDO_MYSQL 針對(duì) mysqlnd 和 PDO 調(diào)試模式進(jìn)行編譯。

目錄 

  • PDO_MYSQL DSN — 連接到 MySQL 數(shù)據(jù)庫


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)