PHP Conference Japan 2024

Pdo\Mysql 类

(PHP 8 >= 8.4.0)

简介

一个表示使用 MySQL PDO 驱动程序的连接的 PDO 子类。

此驱动程序支持针对 MySQL 方言的专用 SQL 查询解析器。它可以处理以下内容

  • 使用加倍和反斜杠作为转义机制的单引号和双引号文字
  • 使用加倍作为转义机制的反引号文字
  • 双连字符、C 样式注释和哈希注释。

类概要

class Pdo\Mysql extends PDO {
/* 继承的常量 */
public const int PDO::PARAM_NULL;
public const int PDO::PARAM_BOOL = 5;
public const int PDO::PARAM_INT = 1;
public const int PDO::PARAM_STR = 2;
public const int PDO::PARAM_LOB = 3;
public const int PDO::PARAM_STMT = 4;
public const int PDO::PARAM_STR_NATL;
public const int PDO::PARAM_STR_CHAR;
public const int PDO::PARAM_EVT_FREE;
public const int PDO::FETCH_DEFAULT;
public const int PDO::FETCH_LAZY;
public const int PDO::FETCH_ASSOC;
public const int PDO::FETCH_NUM;
public const int PDO::FETCH_BOTH;
public const int PDO::FETCH_OBJ;
public const int PDO::FETCH_BOUND;
public const int PDO::FETCH_COLUMN;
public const int PDO::FETCH_CLASS;
public const int PDO::FETCH_INTO;
public const int PDO::FETCH_FUNC;
public const int PDO::FETCH_GROUP;
public const int PDO::FETCH_UNIQUE;
public const int PDO::FETCH_KEY_PAIR;
public const int PDO::FETCH_NAMED;
public const int PDO::ATTR_PREFETCH;
public const int PDO::ATTR_TIMEOUT;
public const int PDO::ATTR_ERRMODE;
public const int PDO::ATTR_CASE;
public const int PDO::ATTR_CURSOR;
public const int PDO::ERRMODE_SILENT;
public const int PDO::CASE_NATURAL;
public const int PDO::CASE_LOWER;
public const int PDO::CASE_UPPER;
public const int PDO::NULL_NATURAL;
public const int PDO::NULL_TO_STRING;
public const string PDO::ERR_NONE;
public const int PDO::FETCH_ORI_NEXT;
public const int PDO::FETCH_ORI_LAST;
public const int PDO::FETCH_ORI_ABS;
public const int PDO::FETCH_ORI_REL;
public const int PDO::CURSOR_FWDONLY;
public const int PDO::CURSOR_SCROLL;
/* 常量 */
public const int ATTR_LOCAL_INFILE;
public const int ATTR_INIT_COMMAND;
public const int ATTR_COMPRESS;
public const int ATTR_DIRECT_QUERY;
public const int ATTR_FOUND_ROWS;
public const int ATTR_IGNORE_SPACE;
public const int ATTR_SSL_KEY;
public const int ATTR_SSL_CERT;
public const int ATTR_SSL_CA;
public const int ATTR_SSL_CAPATH;

public const int ATTR_SSL_CIPHER;
/* 方法 */
public getWarningCount(): int
/* 继承的方法 */
public PDO::__construct(
    string $dsn,
    ?string $username = null,
    #[\SensitiveParameter] ?string $password = null,
    ?array $options = null
)
public PDO::commit(): bool
public static PDO::connect(
    string $dsn,
    ?string $username = null,
    #[\SensitiveParameter] ?string $password = null,
    ?array $options = null
): static
public PDO::exec(string $statement): int|false
public PDO::getAttribute(int $attribute): mixed
public PDO::prepare(string $query, array $options = []): PDOStatement|false
public PDO::query(string $query, ?int $fetchMode = null): PDOStatement|false
public PDO::query(string $query, ?int $fetchMode = PDO::FETCH_COLUMN, int $colno): PDOStatement|false
public PDO::query(
    string $query,
    ?int $fetchMode = PDO::FETCH_CLASS,
    string $classname,
    array $constructorArgs
): PDOStatement|false
public PDO::query(string $query, ?int $fetchMode = PDO::FETCH_INTO, object $object): PDOStatement|false
public PDO::quote(string $string, int $type = PDO::PARAM_STR): string|false
public PDO::setAttribute(int $attribute, mixed $value): bool
}

预定义常量

Pdo\Mysql::ATTR_USE_BUFFERED_QUERY
默认情况下,所有语句都以缓冲模式执行。如果此属性在Pdo\Mysql对象上设置为false,则MySQL驱动程序将使用非缓冲模式。

示例 #1 设置MySQL非缓冲模式

<?php
$pdo
= new Pdo\Mysql("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
启用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
从指定的选项文件读取选项,而不是从my.cnf读取。

注意: 如果使用mysqlnd,则此选项不可用,因为mysqlnd不读取mysql配置文件。

Pdo\Mysql::ATTR_READ_DEFAULT_GROUP
my.cnf或使用Pdo\Mysql::ATTR_READ_DEFAULT_FILE指定的文件中读取指定组的选项。

注意: 如果使用mysqlnd,则此选项不可用,因为mysqlnd不读取mysql配置文件。

Pdo\Mysql::ATTR_COMPRESS
启用网络通信压缩。
Pdo\Mysql::ATTR_DIRECT_QUERY
PDO::ATTR_EMULATE_PREPARES的别名。
Pdo\Mysql::ATTR_FOUND_ROWS
返回找到(匹配)的行数,而不是更改的行数。

注意: 只能在构造新数据库句柄时,用于driver_options数组中。

Pdo\Mysql::ATTR_IGNORE_SPACE
允许SQL函数名后有空格。使所有SQL函数名成为保留字。

注意: 只能在构造新数据库句柄时,用于driver_options数组中。

Pdo\Mysql::ATTR_MAX_BUFFER_SIZE
最大缓冲区大小。默认为1 MiB。

注意: 在针对mysqlnd编译时,不支持此常量。

Pdo\Mysql::ATTR_MULTI_STATEMENTS
当设置为false时,禁用PDO::prepare()PDO::query()中的多查询执行。

注意: 只能在构造新数据库句柄时,用于driver_options数组中。

Pdo\Mysql::ATTR_SERVER_PUBLIC_KEY
与基于SHA-256的身份验证一起使用的RSA公钥文件。

注意: 只能在构造新数据库句柄时,用于driver_options数组中。

Pdo\Mysql::ATTR_SSL_KEY
SSL密钥的文件路径。

注意: 只能在构造新数据库句柄时,用于driver_options数组中。

Pdo\Mysql::ATTR_SSL_CERT

SSL 证书的文件路径。

注意: 只能在构造新数据库句柄时,用于driver_options数组中。

Pdo\Mysql::ATTR_SSL_CA
SSL 证书颁发机构的文件路径。

注意: 只能在构造新数据库句柄时,用于driver_options数组中。

Pdo\Mysql::ATTR_SSL_CAPATH
包含受信任 SSL 证书颁发机构 (CA) 证书的目录的文件路径,这些证书以 PEM 格式存储。

注意: 只能在构造新数据库句柄时,用于driver_options数组中。

Pdo\Mysql::ATTR_SSL_CIPHER
一个或多个允许用于 SSL 加密的密码列表,格式为 OpenSSL 能够理解的格式。例如:DHE-RSA-AES256-SHA:AES128-SHA

注意: 只能在构造新数据库句柄时,用于driver_options数组中。

Pdo\Mysql::ATTR_SSL_VERIFY_SERVER_CERT
提供了一种禁用服务器 SSL 证书验证的方法。从 PHP 7.0.18 和 PHP 7.1.4 开始可用。

注意: 此选项仅在使用 mysqlnd 时可用。

注意: 只能在构造新数据库句柄时,用于driver_options数组中。

目录

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top