The Pdo\Mysql class

Introduction

A PDO subclass representing a connection using the MySQL PDO driver.

This driver supports a dedicated SQL query parser for the MySQL dialect. It can handle the following:

  • Single and double-quoted literals with both doubling and backslash as escaping mechanisms
  • Backtick literals with doubling as escaping mechanism
  • Two-dashes, C-style comments, and Hash-comments.

Class synopsis

Pdo\Mysql
extends PDO
/* Inherited constants */
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_INPUT_OUTPUT;
public const int PDO::PARAM_STR_NATL;
public const int PDO::PARAM_STR_CHAR;
public const int PDO::PARAM_EVT_ALLOC;
public const int PDO::PARAM_EVT_FREE;
public const int PDO::PARAM_EVT_EXEC_PRE;
public const int PDO::PARAM_EVT_EXEC_POST;
public const int PDO::PARAM_EVT_FETCH_PRE;
public const int PDO::PARAM_EVT_FETCH_POST;
public const int PDO::PARAM_EVT_NORMALIZE;
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_CLASSTYPE;
public const int PDO::FETCH_SERIALIZE;
public const int PDO::FETCH_PROPS_LATE;
public const int PDO::FETCH_NAMED;
public const int PDO::ATTR_AUTOCOMMIT;
public const int PDO::ATTR_PREFETCH;
public const int PDO::ATTR_TIMEOUT;
public const int PDO::ATTR_ERRMODE;
public const int PDO::ATTR_SERVER_VERSION;
public const int PDO::ATTR_CLIENT_VERSION;
public const int PDO::ATTR_SERVER_INFO;
public const int PDO::ATTR_CONNECTION_STATUS;
public const int PDO::ATTR_CASE;
public const int PDO::ATTR_CURSOR_NAME;
public const int PDO::ATTR_CURSOR;
public const int PDO::ATTR_ORACLE_NULLS;
public const int PDO::ATTR_PERSISTENT;
public const int PDO::ATTR_STATEMENT_CLASS;
public const int PDO::ATTR_FETCH_TABLE_NAMES;
public const int PDO::ATTR_FETCH_CATALOG_NAMES;
public const int PDO::ATTR_DRIVER_NAME;
public const int PDO::ATTR_STRINGIFY_FETCHES;
public const int PDO::ATTR_MAX_COLUMN_LEN;
public const int PDO::ATTR_EMULATE_PREPARES;
public const int PDO::ATTR_DEFAULT_FETCH_MODE;
public const int PDO::ATTR_DEFAULT_STR_PARAM;
public const int PDO::ERRMODE_SILENT;
public const int PDO::ERRMODE_WARNING;
public const int PDO::ERRMODE_EXCEPTION;
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_EMPTY_STRING;
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_PRIOR;
public const int PDO::FETCH_ORI_FIRST;
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;
/* Constants */
public const int Pdo\Mysql::ATTR_USE_BUFFERED_QUERY;
public const int Pdo\Mysql::ATTR_LOCAL_INFILE;
public const int Pdo\Mysql::ATTR_LOCAL_INFILE_DIRECTORY;
public const int Pdo\Mysql::ATTR_INIT_COMMAND;
public const int Pdo\Mysql::ATTR_MAX_BUFFER_SIZE;
public const int Pdo\Mysql::ATTR_READ_DEFAULT_FILE;
public const int Pdo\Mysql::ATTR_READ_DEFAULT_GROUP;
public const int Pdo\Mysql::ATTR_COMPRESS;
public const int Pdo\Mysql::ATTR_DIRECT_QUERY;
public const int Pdo\Mysql::ATTR_FOUND_ROWS;
public const int Pdo\Mysql::ATTR_IGNORE_SPACE;
public const int Pdo\Mysql::ATTR_MULTI_STATEMENTS;
public const int Pdo\Mysql::ATTR_SERVER_PUBLIC_KEY;
public const int Pdo\Mysql::ATTR_SSL_KEY;
public const int Pdo\Mysql::ATTR_SSL_CERT;
public const int Pdo\Mysql::ATTR_SSL_CA;
public const int Pdo\Mysql::ATTR_SSL_CAPATH;
public const int Pdo\Mysql::ATTR_SSL_CIPHER;
public const int Pdo\Mysql::ATTR_SSL_VERIFY_SERVER_CERT;
/* Methods */
public int Pdo\Mysql::getWarningCount()
/* Inherited methods */
public __construct(
    string $dsn,
    stringnull $username = null,
    #[\SensitiveParameter]stringnull $password = null,
    arraynull $options = null
)
public bool beginTransaction()
public bool commit()
public static static connect(
    string $dsn,
    stringnull $username = null,
    #[\SensitiveParameter]stringnull $password = null,
    arraynull $options = null
)
public stringnull errorCode()
public array errorInfo()
public intfalse exec(string $statement)
public mixed getAttribute(int $attribute)
public static array getAvailableDrivers()
public bool inTransaction()
public stringfalse lastInsertId(stringnull $name = null)
public PDOStatementfalse prepare(string $query, array $options = [])
public PDOStatementfalse query(string $query, intnull $fetchMode = null)
public PDOStatementfalse query(string $query, intnull $fetchMode = PDO::FETCH_COLUMN, int $colno)
public PDOStatementfalse query(
    string $query,
    intnull $fetchMode = PDO::FETCH_CLASS,
    string $classname,
    array $constructorArgs
)
public PDOStatementfalse query(string $query, intnull $fetchMode = PDO::FETCH_INTO, object $object)
public stringfalse quote(string $string, int $type = PDO::PARAM_STR)
public bool rollBack()
public bool setAttribute(int $attribute, mixed $value)

Predefined Constants

Pdo\Mysql::ATTR_USE_BUFFERED_QUERY
By default all statements are executed in buffered mode. If this attribute is set to false on a Pdo\Mysql object, the MySQL driver will use the unbuffered mode.

Example #1 Setting MySQL unbuffered mode

<?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
Enable LOAD LOCAL INFILE.

Note: Can only be used in the driver_options array when constructing a new database handle.

Pdo\Mysql::ATTR_LOCAL_INFILE_DIRECTORY
Allows restricting LOCAL DATA loading to files located in this designated directory.

Note: Can only be used in the driver_options array when constructing a new database handle.

Pdo\Mysql::ATTR_INIT_COMMAND
Command to execute when connecting to the MySQL server. Will automatically be re-executed when reconnecting.

Note: Can only be used in the driver_options array when constructing a new database handle.

Pdo\Mysql::ATTR_READ_DEFAULT_FILE
Read options from the named option file instead of from my.cnf.

Note: This option is not available if mysqlnd is used, because mysqlnd does not read the mysql configuration files.

Pdo\Mysql::ATTR_READ_DEFAULT_GROUP
Read options from the named group from my.cnf or the file specified with Pdo\Mysql::ATTR_READ_DEFAULT_FILE.

Note: This option is not available if mysqlnd is used, because mysqlnd does not read the mysql configuration files.

Pdo\Mysql::ATTR_COMPRESS
Enable network communication compression.
Pdo\Mysql::ATTR_DIRECT_QUERY
Alias of PDO::ATTR_EMULATE_PREPARES.
Pdo\Mysql::ATTR_FOUND_ROWS
Return the number of found (matched) rows, not the number of changed rows.

Note: Can only be used in the driver_options array when constructing a new database handle.

Pdo\Mysql::ATTR_IGNORE_SPACE
Permit spaces after SQL function names. Makes all SQL functions names reserved words.

Note: Can only be used in the driver_options array when constructing a new database handle.

Pdo\Mysql::ATTR_MAX_BUFFER_SIZE
Maximum buffer size. Defaults to 1 MiB.

Note: This constant is not supported when compiled against mysqlnd.

Pdo\Mysql::ATTR_MULTI_STATEMENTS
Disables multi query execution in both PDO::prepare and PDO::query when set to false.

Note: Can only be used in the driver_options array when constructing a new database handle.

Pdo\Mysql::ATTR_SERVER_PUBLIC_KEY
RSA public key file used with the SHA-256 based authentication.

Note: Can only be used in the driver_options array when constructing a new database handle.

Pdo\Mysql::ATTR_SSL_KEY
The file path to the SSL key.

Note: Can only be used in the driver_options array when constructing a new database handle.

Pdo\Mysql::ATTR_SSL_CERT
The file path to the SSL certificate.

Note: Can only be used in the driver_options array when constructing a new database handle.

Pdo\Mysql::ATTR_SSL_CA
The file path to the SSL certificate authority.

Note: Can only be used in the driver_options array when constructing a new database handle.

Pdo\Mysql::ATTR_SSL_CAPATH
The file path to the directory that contains the trusted SSL CA certificates, which are stored in PEM format.

Note: Can only be used in the driver_options array when constructing a new database handle.

Pdo\Mysql::ATTR_SSL_CIPHER
A list of one or more permissible ciphers to use for SSL encryption, in a format understood by OpenSSL. For example: DHE-RSA-AES256-SHA:AES128-SHA

Note: Can only be used in the driver_options array when constructing a new database handle.

Pdo\Mysql::ATTR_SSL_VERIFY_SERVER_CERT
Provides a way to disable verification of the server SSL certificate.

Note: This option is available only with mysqlnd.

Note: Can only be used in the driver_options array when constructing a new database handle.

Table of Contents