Funções do MySQL (PDO_MYSQL)

Introdução

PDO_MYSQL é um driver que implementa a interface PHP Data Objects (PDO) para habilitar o acesso do PHP aos bancos de dados MySQL.

PDO_MYSQL utiliza as preparações emuladas por padrão.

MySQL 8

Ao executar uma versão de PHP anterior a 7.1.16, ou 7.2.4, defina o plugin padrão de senhas do Servidor MySQL 8 para mysql_native_password ou poderão surgir erros similares a The server requested authentication method unknown to the client [caching_sha2_password] mesmo quando caching_sha2_password não seja usado.

Isto acontece porque o padrão do MySQL 8 é caching_sha2_password, um plugin que não é reconhecido pelas versões antigas do PHP (mysqlnd). Portanto, altere o plugin configurando default_authentication_plugin=mysql_native_password no arquivo my.cnf. O plugin caching_sha2_password é totalmente suportado a partir do PHP 7.4.4. Para versões anteriores do PHP, a extensão mysql_xdevapi suporta o plugin.

Aviso

Cuidado: Alguns tipos de tabelas do MySQL (storage engines) não suportam transações. Ao escrever código para um banco de dados transacional onde o tipo de tabela não suporta transações, o MySQL irá entender que a transação foi inicializada com sucesso. Além disso, qualquer query DDL irá, de forma implícita, executar o commit para qualquer transação que esteja pendente.

Nota:

O driver MySQL não suporta propriamente PDO::PARAM_INPUT_OUTPUT através de PDOStatement::bindParam(); embora tais parâmetros possam ser usados, eles não são atualizados (isto é, a saída real é ignorada).

Instalação

The common Unix distributions include binary versions of PHP that can be installed. Although these binary versions are typically built with support for the MySQL extensions, the extension libraries themselves may need to be installed using an additional package. Check the package manager that comes with your chosen distribution for availability.

For example, on Ubuntu the php5-mysql package installs the ext/mysql, ext/mysqli, and PDO_MYSQL PHP extensions. On CentOS, the php-mysql package also installs these three PHP extensions.

Alternatively, you can compile this extension yourself. Building PHP from source allows you to specify the MySQL extensions you want to use, as well as your choice of client library for each extension.

When compiling, use --with-pdo-mysql[=DIR] to install the PDO MySQL extension, where the optional [=DIR] is the MySQL base library. Mysqlnd is the default library. For details about choosing a library, see Choosing a MySQL library.

Optionally, the --with-mysql-sock[=DIR] sets to location to the MySQL unix socket pointer for all MySQL extensions, including PDO_MYSQL. If unspecified, the default locations are searched.

Optionally, the --with-zlib-dir[=DIR] is used to set the path to the libz install prefix.

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

SSL support is enabled using the appropriate PDO_MySQL constants, which is equivalent to calling the » MySQL C API function mysql_ssl_set(). Also, SSL cannot be enabled with PDO::setAttribute because the connection already exists. See also the MySQL documentation about » connecting to MySQL with SSL.

Constantes pré-definidas

As constantes abaixo são definidas por este driver e só estarão disponíveis quando a extensão tiver sido compilada no PHP ou tiver sido carregada dinamicamente em tempo de execução. Além disso, estas constantes específicas do driver só devem ser usadas se este driver estiver sendo usado. Usar atributos específicos de um driver com outro driver pode resultar em comportamento inesperado. PDO::getAttribute() pode ser usada para obter o atributo PDO::ATTR_DRIVER_NAME para verificar o driver, se o código puder ser executado com vários drivers.

PDO::MYSQL_ATTR_USE_BUFFERED_QUERY (bool)
Por padrão todas as instruções são executadas com buffer ativo. Se este atributo for definido para false em um objeto PDO, o driver MySQL usará o modo sem buffer.

Exemplo #1 Configurando o mode sem buffer no 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)

Habilita LOAD LOCAL INFILE.

Note que essa constante só pode ser usada no array driver_options ao construir um novo manipulador de banco de dados.

PDO::MYSQL_ATTR_LOCAL_INFILE_DIRECTORY (string)

Permite restringir o carregamento através de LOCAL DATA a arquivos localizados neste diretório designado. Disponível a partir do PHP 8.1.0.

Note que esta constante só pode ser usada no array driver_options ao construir um novo manipulador de banco de dados.

PDO::MYSQL_ATTR_INIT_COMMAND (string)

Comando para executar ao se conectar no servidor MySQL. Irá ser executado novamente ao reconectar.

Note que essa constante só pode ser usada no array driver_options ao construir um novo manipulador de banco de dados.

PDO::MYSQL_ATTR_READ_DEFAULT_FILE (int)

Lê configurações do arquivo definido nas opções ao invés do arquivo my.cnf. Essa opção não está disponível se mysqlnd for usado, porque mysqlnd não lê os arquivos de configurações do mysql.

PDO::MYSQL_ATTR_READ_DEFAULT_GROUP (int)

Lê configurações do grupo nomeado em my.cnf ou no arquivo especificado com MYSQL_READ_DEFAULT_FILE. Essa opção não está disponível se mysqlnd for usado, porque mysqlnd não lê os arquivos de configurações do mysql.

PDO::MYSQL_ATTR_MAX_BUFFER_SIZE (int)

Tamanho máximo do buffer. O padrão é 1 MiB. Essa constante não é suportada quando utilizado mysqlnd.

PDO::MYSQL_ATTR_DIRECT_QUERY (int)

Executa consultas diretamente, não usa declarações preparadas.

PDO::MYSQL_ATTR_FOUND_ROWS (int)

Retorna a quantidade de linhas encontradas (matched), e não a quantidade de linhas modificadas.

PDO::MYSQL_ATTR_IGNORE_SPACE (int)

Permite espaços depois do nome das funções. Torna o nome de todas as funções palavras reservadas.

PDO::MYSQL_ATTR_COMPRESS (int)

Habilita a compressão na comunicação de rede.

PDO::MYSQL_ATTR_SSL_CA (int)

Caminho para o arquivo da autoridade certificadora (CA) SSL.

PDO::MYSQL_ATTR_SSL_CAPATH (int)

Caminho para o diretório que contém os certificados SSL confiáveis da autoridade certificadora (CA), armazenados no formato PEM.

PDO::MYSQL_ATTR_SSL_CERT (int)

Caminho para o certificado SSL.

PDO::MYSQL_ATTR_SSL_CIPHER (int)

Uma lista de um ou mais "ciphers" admissíveis para usar na encriptação SSL, em um formato compreendido pelo OpenSSL. For example: DHE-RSA-AES256-SHA:AES128-SHA

PDO::MYSQL_ATTR_SSL_KEY (int)

Caminho para a chave SSL.

PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT (int)

Fornece uma maneira de desabilitar verificação do certificado SSL do servidor. Esta opção está disponível somente com mysqlnd.

Isto existe a partir do PHP 7.0.18 and PHP 7.1.4.

PDO::MYSQL_ATTR_MULTI_STATEMENTS (int)

Desabilita a execução de consultas múltiplas nas funções PDO::prepare() e PDO::query() quando definido como false.

Note que essa constante só pode ser usada no array driver_options ao construir um novo manipulador de banco de dados.

Configurações em Execução

O comportamento destas funções é afetado pelas configurações do php.ini.

PDO_MYSQL Configuration Options
NomePadrãoModificável
pdo_mysql.default_socket"/tmp/mysql.sock"INI_SYSTEM
pdo_mysql.debugNULLINI_SYSTEM
Para mais detalhes e definições dos modos INI_*, consulte os Onde uma configuração deve ser definida.

Aqui está uma breve explicação das diretivas de configuração.

pdo_mysql.default_socketstring

Sets a Unix domain socket. This value can either be set at compile time if a domain socket is found at configure. This ini setting is Unix only.

pdo_mysql.debugbool

Enables debugging for PDO_MYSQL. This setting is only available when PDO_MYSQL is compiled against mysqlnd and in PDO debug mode.

Índice

To Top