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.cnfPDO::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.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 数据库
更多建议: