codecamp

PHP8 PDO_MYSQL

简介 

PDO_MYSQL 是实现 PHP 的驱动程序 数据对象 (PDO) 接口,用于启用从 PHP 到 MySQL 数据库的访问。

默认情况下,PDO_MYSQL使用模拟准备。

MySQL 8的

运行 7.1.16 之前的 PHP 版本或 7.2.4 之前的 PHP 版本时,请将 MySQL 8 Server的默认密码插件mysql_native_password否则,即使不使用caching_sha2_password,您也会看到类似于The server requested authentication method unknown to the client [caching_sha2_password]的错误。

这是因为 MySQL 8 默认为 caching_sha2_password,这是一个插件 旧版 PHP (mysqlnd) 无法识别。相反,请将其更改为 设置在 中。从 PHP 7.4.4 开始完全支持 caching_sha2_password 插件。对于较旧的版本,mysql_xdevapi扩展可以 支持它。default_authentication_plugin=mysql_native_passwordmy.cnf

警告

注意:某些MySQL表类型(存储引擎)不支持事务。什么时候 使用不支持的表类型编写事务数据库代码 事务,MySQL会假装事务启动成功。 此外,任何发出的 DDL 查询都会隐式地 提交任何待处理事务。

注意:MySQL 驱动程序无法通过 PDOStatement::bindParam() 正确支持 PDO::P ARAM_INPUT_OUTPUT;虽然可以使用这样的参数, 它们不会更新(即忽略实际输出)。

安装 

常见的 Unix 发行版包括 PHP 的二进制版本,可以 安装。尽管这些二进制版本通常使用 支持MySQL扩展,扩展库 它们本身可能需要使用额外的软件包进行安装。检查 所选发行版附带的包管理器 可用性。

例如,在 Ubuntu 上,软件包安装 ext/mysql、ext/mysqli 和 PDO_MYSQL PHP 扩展。在 CentOS 上, 该软件包还安装了这三个 PHP 扩展。php5-mysqlphp-mysql

或者,您可以自己编译此扩展。构建 PHP source 还允许您指定要使用的 MySQL 扩展 作为每个扩展的客户端库选择。

编译时,使用 --with-pdo-mysql[=DIR] 安装 PDO MySQL 扩展,其中可选的是 MySQL 基本库。Mysqlnd 是默认库。有关选择库的详细信息,请参阅选择 MySQL 库。[=DIR]

(可选)--with-mysql-sock[=DIR] 设置为 location 到所有 MySQL 扩展(包括 PDO_MYSQL)的 MySQL unix 套接字指针。如果 未指定,则搜索默认位置。

或者,--with-zlib-dir[=DIR] 用于设置 libz 安装前缀的路径。

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

使用适当的 PDO_MySQL 常量启用 SSL 支持, 这相当于调用 » MySQL C API 函数 mysql_ssl_set()。 此外,无法使用 PDO::setAttribute 启用 SSL,因为连接 已存在。另请参阅有关 » 连接到 带有SSL的MySQL。

预定义常量 

下列常量由此驱动定义,且仅在扩展编译入 PHP 或在运行时动态载入时可用。 另外,使用此驱动时,仅会使用这些驱动特定的常量。 使用其他驱动的驱动特定的常量可能会导致不可预见的情况。 如果代码可运行于多个驱动,PDO::getAttribute() 可被用于获取 PDO_ATTR_DRIVER_NAME 属性以检查驱动。

PDO::MYSQL_ATTR_USE_BUFFERED_QUERY (bool)
默认情况下,所有语句都在缓冲模式下执行。 如果此属性在 PDO 对象上设置为 false,则 MySQL 驱动程序将使用 无缓冲模式。

示例 #1 设置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

请注意,此常量只能在构造新的数据库句柄时在数组中使用。driver_options

PDO::MYSQL_ATTR_LOCAL_INFILE_DIRECTORY (字符串)

允许将 LOCAL DATA 加载限制为位于此指定的文件中 目录。从 PHP 8.1.0 开始可用。

请注意,此常量只能在构造新的数据库句柄时在数组中使用。driver_options

PDO::MYSQL_ATTR_INIT_COMMAND (字符串)

连接到MySQL服务器时要执行的命令。将 重新连接时自动重新执行。

请注意,此常量只能在构造新的数据库句柄时在数组中使用。driver_options

PDO::MYSQL_ATTR_READ_DEFAULT_FILE (int)

从命名选项文件中读取选项,而不是从 中读取选项。如果出现以下情况,则此选项不可用 使用 mysqlnd,因为 mysqlnd 不读取 mysql 配置文件。my.cnf

PDO::MYSQL_ATTR_READ_DEFAULT_GROUP (int)

从命名组中读取选项 from 或 用 MYSQL_READ_DEFAULT_FILE 指定的文件。此选项 如果使用 mysqlnd,则不可用,因为 mysqlnd 不读取 mysql 配置文件。my.cnf

PDO::MYSQL_ATTR_MAX_BUFFER_SIZE (int)

最大缓冲区大小。默认值为 1 MiB。当以下情况下,不支持此常量 针对 mysqlnd 编译。

PDO::MYSQL_ATTR_DIRECT_QUERY (int)

执行直接查询,不要使用预准备的语句。

PDO::MYSQL_ATTR_FOUND_ROWS (int)

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

PDO::MYSQL_ATTR_IGNORE_SPACE (int)

允许在函数名称后有空格。使所有功能 名称保留字。

PDO::MYSQL_ATTR_COMPRESS (int)

启用网络通信压缩。

PDO::MYSQL_ATTR_SSL_CA (int)

SSL 证书颁发机构的文件路径。

PTO::MyScle_Adr_SSL_Cabath (整数))

包含受信任 SSL 的目录的文件路径 CA 证书,以 PEM 格式存储。

PDO::MYSQL_ATTR_SSL_CERT (整数)

SSL 证书的文件路径。

PDO::MYSQL_ATTR_SSL_CIPHER (int)

用于 SSL 加密的一个或多个允许的密码的列表,格式如下 被 OpenSSL 理解。例如:DHE-RSA-AES256-SHA:AES128-SHA

PDO::MYSQL_ATTR_SSL_KEY (整数)

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

运行时配置 

这些函数的行为受 中的设置影响。 php.ini

PDO_MYSQL配置选项
名字默认可修改范围
pdo_mysql.default_socket“/tmp/mysql.sock”INI_SYSTEM
pdo_mysql.调试INI_SYSTEM

有关 INI_* 样式的更多详情与定义,见

 

配置可被设定范围

这是配置指令的简短说明。

pdo_mysql.default_socket 字符串

设置 Unix 域套接字。如果出现以下情况,则可以在编译时设置此值 在 Configure 中找到域套接字。此 ini 设置仅适用于 Unix。

pdo_mysql.debug 布尔

启用PDO_MYSQL的调试。此设置仅在以下情况下可用PDO_MYSQL 针对 mysqlnd 和 PDO 调试模式进行编译。

目录 

  • PDO_MYSQL DSN — 连接到 MySQL 数据库


PHP8 PDO_INFORMIX
PHP8 PDO_SQLSRV
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

PHP8 语言参考

PHP8 函数参考

PHP8 影响 PHP 行为的扩展

PHP8 Componere

PHP8 安装/配置

PHP8 外部函数接口

PHP8 选项和信息

PHP8 选项/信息 函数

PHP8 Windows Cache for PHP

PHP8 WinCache 函数

PHP8 Yac

PHP8 身份认证服务

PHP8 Radius 函数

PHP8 压缩与归档扩展

PHP8 Phar

PHP8 Zip

PHP8 ZipArchive 类

PHP8 加密扩展

PHP8 OpenSSL

PHP8 OpenSSL 函数

PHP8 Sodium 函数

PHP8 数据库扩展

PHP8 针对各数据库系统对应的扩展

PHP8 CUBRID 函数

PHP8 Firebird/InterBase

PHP8 Firebird/InterBase函数

PHP8 MongoDB介绍驱动程序体系结构和特殊功能

PHP8 MongoDB\Driver\Command 类

PHP8 MongoDB\Driver\Query 类

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }