PDO_MYSQL是一个实现PHP数据对象(PDO)接口允许从PHP访问MySQL数据库。
PDO_MYSQL默认使用模拟准备。
MySQL 8
当运行7.1.16之前的PHP版本或7.2.4之前的PHP 7.2时,将MySQL 8服务器的默认密码插件设置为mysql_native_password否则您将看到类似于服务器请求的身份验证方法对客户端来说是未知的。即使caching_sha2_password是不习惯。
这是因为MySQL 8默认为caching_sha2_password,一个不被旧的PHP (mysqlnd)版本识别的插件。相反,可以通过设置来更改它default_authentication_plugin = mysql_native_password
在my.cnf
.的caching_sha2_password插件将在未来的PHP版本中得到支持。与此同时,mysql_xdevapi扩展支持它。
注意:一些MySQL表类型(存储引擎)不支持事务。当使用不支持事务的表类型编写事务数据库代码时,MySQL将假装事务已成功启动。此外,发出的任何DDL查询都将隐式提交任何挂起的事务。
常见的Unix发行版包括可以安装的PHP二进制版本。尽管这些二进制版本通常是在支持MySQL扩展的情况下构建的,但是扩展库本身可能需要使用额外的包进行安装。检查所选发行版附带的包管理器的可用性。
例如,在Ubuntu上php5-mysql
包安装了ext/mysql, ext/mysqli和PDO_MYSQL PHP扩展。在CentOS,php mysql
包还安装这三个PHP扩展。
或者,您可以自己编译这个扩展。从源代码构建PHP允许您指定想要使用的MySQL扩展,以及为每个扩展选择的客户端库。
当编译时,使用——with-pdo-mysql (= DIR)
安装PDO MySQL扩展,其中可选的(= DIR)
是MySQL的基础库。从PHP 5.4开始,mysqlnd是默认库。有关选择库的详细信息,请参见选择MySQL库.
可选地,——with-mysql-sock (= DIR)
将location设置为所有MySQL扩展的MySQL unix套接字指针,包括PDO_MYSQL。如果未指定,则搜索默认位置。
可选地,——with-zlib-dir (= DIR)
用于设置libz安装前缀的路径。
$ ./configure——with-pdo-mysql——with-mysql-sock=/var/mysql/mysql.sock
SSL支持使用适当的PDO_MySQL常量,相当于调用MySQL C API函数mysql_ssl_set().此外,SSL不能被启用PDO: setAttribute
因为连接已经存在。参见MySQL文档10bet官方网站使用SSL连接MySQL.
下面的常量是由这个驱动程序定义的,只有当扩展被编译成PHP或在运行时动态加载时才可用。此外,只有在使用此驱动程序时才应该使用这些驱动程序特定的常量。在另一个驱动程序中使用特定于驱动程序的属性可能会导致意想不到的行为。PDO: getAttribute
可用于获取PDO: ATTR_DRIVER_NAME
属性来检查驱动程序,如果您的代码可以在多个驱动程序上运行。
-
PDO: MYSQL_ATTR_USE_BUFFERED_QUERY
(int) -
如果将此属性设置为
真正的
在一个PDOStatement
, MySQL驱动程序将使用MySQL API的缓冲版本。如果您正在编写可移植代码,您应该使用PDOStatement:: fetchAll
代替。例7.136在mysql中强制缓冲查询
<?php if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') {$stmt = $db->prepare('select * from foo',数组(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true));} else {die("我的应用程序只与mysql工作;我应该使用\$stmt->fetchAll()代替");} ? >
-
PDO: MYSQL_ATTR_LOCAL_INFILE
(int) -
启用
加载本地INFILE
.注意,此常量只能在
driver_options
数组在构造新的数据库句柄时。 -
PDO: MYSQL_ATTR_LOCAL_INFILE_DIRECTORY
(字符串) -
允许将本地数据加载限制为位于此指定目录中的文件。
注意,此常量只能在
driver_options
数组在构造新的数据库句柄时。 -
PDO: MYSQL_ATTR_INIT_COMMAND
(int) -
连接MySQL服务器时执行的命令。将在重新连接时自动重新执行。
注意,此常量只能在
driver_options
数组在构造新的数据库句柄时。 -
PDO: MYSQL_ATTR_READ_DEFAULT_FILE
(int) -
从已命名的选项文件中读取选项,而不是从
my.cnf
.如果使用mysqlnd,则此选项不可用,因为mysqlnd不读取mysql配置文件。 -
PDO: MYSQL_ATTR_READ_DEFAULT_GROUP
(int) -
从指定的组中读取选项
my.cnf
或指定的文件MYSQL_READ_DEFAULT_FILE
.如果使用mysqlnd,则此选项不可用,因为mysqlnd不读取mysql配置文件。 -
PDO: MYSQL_ATTR_MAX_BUFFER_SIZE
(int) -
最大缓冲区大小。缺省值:1mib。当根据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证书颁发机构的文件路径。
-
PDO: MYSQL_ATTR_SSL_CAPATH
(int) -
包含受信任的SSL CA证书的目录的文件路径,证书以PEM格式存储。
-
PDO: MYSQL_ATTR_SSL_CERT
(int) -
SSL证书的文件路径。
-
PDO: MYSQL_ATTR_SSL_CIPHER
(int) -
用于SSL加密的一个或多个允许的密码的列表,格式为OpenSSL所理解。例如:
DHE-RSA-AES256-SHA: AES128-SHA
-
PDO: MYSQL_ATTR_SSL_KEY
(int) -
SSL密钥的文件路径。
-
PDO: MYSQL_ATTR_SSL_VERIFY_SERVER_CERT
(int) -
提供禁用对服务器SSL证书的验证的方法。
这在PHP 7.0.18和PHP 7.1.4中已经存在。
-
PDO: MYSQL_ATTR_MULTI_STATEMENTS
(int) -
在两者中禁用多查询执行
PDO:准备
而且PDO:查询
当设置为假
.注意,此常量只能在
driver_options
数组在构造新的数据库句柄时。
中的设置会影响这些函数的行为php . ini
.
表7.20 PDO_MYSQL配置选项
的名字 | 默认的 | 多变的 |
---|---|---|
pdo_mysql.default_socket | “/ tmp / mysql.sock” | PHP_INI_SYSTEM |
pdo_mysql.debug | 零 | PHP_INI_SYSTEM |
有关PHP_INI_*模式的更多详细信息和定义,请参见http://www.php.net/manual/en/configuration.changes.modes.
下面是配置指令的简短解释。