Constantes predefinidas

Índice

As constantes abaixo são definidas por esta extensão 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.

Cursores

Veja também PDO::ATTR_CURSOR_NAME.

PDO::FETCH_ORI_NEXT (int)

Busca a próxima linha no conjunto de resultados. Válido apenas para cursores roláveis.

PDO::FETCH_ORI_PRIOR (int)

Busca a linha anterior no conjunto de resultados. Válido apenas para cursores roláveis.

PDO::FETCH_ORI_FIRST (int)

Busca a primeira linha no conjunto de resultados. Válido apenas para cursores roláveis.

PDO::FETCH_ORI_LAST (int)

Busca a última linha no conjunto de resultados. Válido apenas para cursores roláveis.

PDO::FETCH_ORI_ABS (int)

Busca a linha solicitada pelo número da linha do conjunto de resultados. Válida somente para cursores roláveis.

PDO::FETCH_ORI_REL (int)

Busca a linha solicitada pela posição relativa à posição atual do cursor no conjunto de resultados. Válida somente para cursores roláveis.

PDO::CURSOR_FWDONLY (int)

Cria um objeto PDOStatement com um cursor somente para frente. Esta é a escolha de cursor padrão, pois é o padrão mais rápido e comum de acesso a dados em PHP.

PDO::CURSOR_SCROLL (int)

Cria um objeto PDOStatement com um cursor rolável. Passe as constantes PDO::FETCH_ORI_* para controlar as linhas buscadas do conjunto de resultados.

Outras constantes

PDO::PARAM_BOOL (int)

Representa um tipo de dado booleano.

PDO::PARAM_NULL (int)

Representa o tipo de dado SQL NULL.

PDO::PARAM_INT (int)

Representa o tipo de dados SQL INTEGER.

PDO::PARAM_STR (int)

Representa o tipo de dados SQL CHAR, VARCHAR ou outra string.

PDO::PARAM_STR_NATL (int)

Sinaliza que uma string usa o conjunto de caracteres nacional.

Disponível a partir do PHP 7.2.0

PDO::PARAM_STR_CHAR (int)

Sinaliza que uma string usa o conjunto de caracteres regular.

Disponível a partir do PHP 7.2.0

PDO::PARAM_LOB (int)

Representa o tipo de dados SQL large object.

PDO::PARAM_STMT (int)

Representa um tipo de conjunto de registros. Atualmente não suportado por nenhum driver.

PDO::PARAM_INPUT_OUTPUT (int)

Especifica que o parâmetro é um parâmetro INOUT para um procedimento armazenado. Esse valor deve ser combinado através de OR binário com uma das constantes PDO::PARAM_*.

PDO::ATTR_AUTOCOMMIT (bool)

Se esse valor for false, o PDO tenta desativar o autocommit para que a conexão inicie uma transação.

A partir do PHP 8.4.0, esta constante é tipada como bool; anteriormente, era tipada como int.

PDO::ATTR_PREFETCH (int)

Definir o tamanho da pré-busca permite balancear entre velocidade e uso de memória em uma aplicação. Nem todas as combinações de banco de dados e drivers suportam a definição do tamanho do pré-busca. Um tamanho de pré-busca maior resulta em um aumento de desempenho com o custo de um uso maior de memória.

O driver PDO_PGSQL, por sua vez, trata esse atributo como uma opção: a partir do PHP 8.5.0, o valor 0 habilita a busca lenta (linha única); consulte a documentação do driver PDO_PGSQL para obter detalhes.

PDO::ATTR_TIMEOUT (int)

Define o valor de tempo limite em segundos para comunicações com o banco de dados.

PDO::ATTR_ERRMODE (int)

Consulte a seção Erros e tratamento de erros para obter mais informações sobre este atributo.

PDO::ATTR_SERVER_VERSION (int)

Este é um atributo somente leitura; ele retornará informações sobre a versão do servidor de banco de dados ao qual o PDO está conectado.

PDO::ATTR_CLIENT_VERSION (int)

Este é um atributo somente leitura; ele retornará informações sobre a versão das bibliotecas de cliente que o driver PDO está usando.

PDO::ATTR_SERVER_INFO (int)

Este é um atributo somente leitura; ele retornará algumas informações meta sobre o servidor de banco de dados ao qual o PDO está conectado.

PDO::ATTR_CONNECTION_STATUS (int)

PDO::ATTR_CASE (int)

Força os nomes das colunas para um caso específico definido pelas constantes PDO::CASE_*.

PDO::ATTR_CURSOR_NAME (int)

Obtém ou define o nome a ser usado para um cursor. Mais útil ao usar cursores roláveis e atualizações posicionadas.

PDO::ATTR_CURSOR (int)

Seleciona o tipo de cursor. O PDO atualmente suporta PDO::CURSOR_FWDONLY ou PDO::CURSOR_SCROLL. A menos que haja necessidade de cursores roláveis, deve-se usar o modo de cursor PDO::CURSOR_FWDONLY.

PDO::ATTR_DRIVER_NAME (int)

Retorna o nome do driver.

Exemplo #1 using PDO::ATTR_DRIVER_NAME

<?php
 if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') {
   echo "Running on mysql; doing something mysql specific here\n";
 }
 ?>
PDO::ATTR_ORACLE_NULLS (int)

Converte strings vazias em valores SQL NULL em buscas de dados.

PDO::ATTR_PERSISTENT (int)

Solicita uma conexão persistente, em vez de criar uma nova conexão. Consulte Conexões e Gerenciamento de Conexões para obter mais informações sobre este atributo.

PDO::ATTR_STATEMENT_CLASS (int)

Define o nome da classe e os argumentos do construtor para a extensão do objeto PDOStatement. O primeiro elemento do array é o nome da classe, e o segundo elemento é um array de argumentos do construtor.

PDO::ATTR_FETCH_CATALOG_NAMES (int)

Adiciona o nome do catálogo contenedor a cada nome de coluna retornado no conjunto de resultados. O nome do catálogo e o nome da coluna são separados por um caractere de ponto (.). O suporte deste atributo é no nível do driver; pode não ser suportado pelo driver em uso.

PDO::ATTR_FETCH_TABLE_NAMES (int)

Adiciona o nome da tabela contenedora a cada nome de coluna retornado no conjunto de resultados. O nome da tabela e o nome da coluna são separados por um caractere de ponto (.). O suporte deste atributo é no nível do driver; pode não ser suportado pelo driver em uso.

PDO::ATTR_STRINGIFY_FETCHES (int)

Força todos os valores buscados (exceto null) a serem tratados como strings. Valores null permanecem inalterados a menos que PDO::ATTR_ORACLE_NULLS esteja definida para PDO::NULL_TO_STRING.

PDO::ATTR_MAX_COLUMN_LEN (int)

Define o comprimento máximo do nome da coluna.

PDO::ATTR_DEFAULT_FETCH_MODE (int)

PDO::ATTR_EMULATE_PREPARES (bool)

Se deve habilitar ou desabilitar a emulação de instruções preparadas. Alguns drivers não suportam instruções preparadas nativas ou têm suporte apenas limitado a elas. Quando definido como true, o PDO sempre emula instruções preparadas; quando definido como false, ele usa as instruções preparadas nativas do driver.

A partir do PHP 8.4.0, esta constante é tipada como bool; anteriormente, era tipada como int.

PDO::ATTR_DEFAULT_STR_PARAM (int)

Define o tipo de parâmetro de string padrão, que pode ser uma das constantes PDO::PARAM_STR_NATL ou PDO::PARAM_STR_CHAR.

Disponível a partir do PHP 7.2.0.

PDO::ERRMODE_SILENT (int)

Não gera um erro ou exceção se ocorrer um erro. É esperado que o próprio desenvolvedor verifique explicitamente os erros. Anteriormente ao PHP 8.0.0, este era o modo padrão. Consulte Erros e tratamento de erros para mais informações sobre este atributo.

PDO::ERRMODE_WARNING (int)

Emite uma mensagem PHP E_WARNING se ocorrer um erro. Consulte Erros e tratamento de erros para mais informações sobre este atributo.

PDO::ERRMODE_EXCEPTION (int)

Lança uma PDOException se ocorrer um erro. Este é o modo padrão a partir do PHP 8.0.0. Consulte Erros e tratamento de erros para mais informações sobre este atributo.

PDO::CASE_NATURAL (int)

Deixa os nomes das colunas como retornados pelo driver do banco de dados.

PDO::CASE_LOWER (int)

Força os nomes das colunas em minúsculas.

PDO::CASE_UPPER (int)

Força os nomes das colunas em maiúsculas.

PDO::NULL_NATURAL (int)

PDO::NULL_EMPTY_STRING (int)

PDO::NULL_TO_STRING (int)

PDO::ERR_NONE (string)

Corresponde a SQLSTATE '00000', significando que a instrução SQL foi emitida com sucesso sem erros ou avisos. Esta constante é uma conveniência ao verificar PDO::errorCode() ou PDOStatement::errorCode() para determinar se ocorreu um erro. De qualquer forma, isto geralmente é determinado pela verificação do código de retorno do método que gerou a condição de erro.

PDO::PARAM_EVT_ALLOC (int)

Evento de alocação

PDO::PARAM_EVT_FREE (int)

Evento de desalocação

PDO::PARAM_EVT_EXEC_PRE (int)

Evento acionado antes da execução de uma instrução preparada.

PDO::PARAM_EVT_EXEC_POST (int)

Evento acionado após a execução de uma instrução preparada.

PDO::PARAM_EVT_FETCH_PRE (int)

Evento acionado antes de buscar um resultado de um conjunto de resultados.

PDO::PARAM_EVT_FETCH_POST (int)

Evento acionado após buscar um resultado de um conjunto de resultados.

PDO::PARAM_EVT_NORMALIZE (int)

Evento acionado durante o registro de parâmetro vinculado, permitindo ao driver normalizar o nome do parâmetro.

PDO::SQLITE_DETERMINISTIC (int)
Aviso

Esta constante foi DESCONTINUADA a partir do PHP 8.5.0. Use Pdo\Sqlite::DETERMINISTIC em seu lugar.

Especifica que uma função criada com PDO::sqliteCreateFunction() é determinística, ou seja, ela sempre retorna o mesmo resultado dados os mesmos inputs dentro de uma única instrução SQL. (Disponível a partir do PHP 7.1.4.)

adicionar nota

Notas de Usuários 6 notes

up
18
sam at xnet dot tk
13 years ago
It should be noted that PDO::FETCH_CLASS will call the constructor *after* setting the values (or calling __set).
up
10
Oleg Andreyev
10 years ago
Default value for \PDO::ATTR_TIMEOUT is 30 seconds.
Ref.: https://github.com/php/php-src/blob/PHP-7.1.0/ext/pdo_mysql/mysql_driver.c#L600
up
5
kevin at kevinlocke dot name
6 years ago
PDO::PARAM_STR_CHAR and PDO::PARAM_STR_NATL must be combined with PDO::PARAM_STR using bitwise-OR for parameter binding.

These flags control value quoting (e.g. PDO::quote) and, in some situations (see below), parameter binding  (e.g. PDO::bindParam, PDO::bindValue) to prefix string literals with N'' as defined in SQL-92.  As of PHP 7.3, only dblib and mysql support these flags.  For the mysql driver, the flags only affect parameter binding when PDO::ATTR_EMULATE_PREPARES is true (the default).

MySQL and MariaDB interpret string literals prefixed with N as being utf8 (not utf8mb4) regardless of `SET NAMES` or the charset parameter.  This can cause problems if the database/table/column charset is not utf8.  For example, in a database using utf8mb4, the query "SELECT * FROM table WHERE col = :param" and bindValue(":param", "\u{1F600}", PDO::PARAM_STR | PDO::PARAM_STR_NATL) will cause "PDOException: SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='".  Using PDO::PARAM_STR without PDO::PARAM_STR_NATL and ensuring the charset DSN parameter is set correctly can avoid this issue.

See:
https://wiki.php.net/rfc/extended-string-types-for-pdo
https://mariadb.com/kb/en/library/string-literals/
https://dev.mysql.com/doc/refman/8.0/en/string-literals.html
up
3
Sbastien
5 years ago
PDO::FETCH_UNIQUE not only fetches the unique values, it also uses the first SQL column as array key result, what is very useful for create quickly an index, eg :

<?php

$sql = <<<SQL
    SELECT ALL
        c1, -- For result indexing
        c1, c2
    FROM (
        VALUES
            ROW('ID-1', 'Value 1'),
            ROW('ID-2', 'Value 2a'),
            ROW('ID-2', 'Value 2b'),
            ROW('ID-3', 'Value 3')
    ) AS t (c1, c2);
    SQL;
$result = $pdo->query($sql);
print_r($result->fetchAll(PDO::FETCH_UNIQUE));

/*
Gives :
ID-1 => [c1 => ID-1,  c2 => Value 1]
ID-2 => [c1 => ID-2b, c2 => Value 2b]
ID-3 => [c1 => ID-3,  c2 => Value 3]
*/

?>
up
2
todd at toddwiggins dot com dot au
6 years ago
Reference to all the PDO::MYSQL_* constants is available in MySQL's documentation for the driver here: https://dev.mysql.com/doc/connectors/en/apis-php-pdo-mysql.html

Such as the ones I was looking for PDO::MYSQL_ATTR_SSL_CA and PDO::MYSQL_ATTR_SSL_CAPATH which are not listed on this page.
up
-1
happy dot job7348 at fastmail dot com
2 years ago
To bind a float, use PDO::PARAM_STR with bindValue. You can skip the PDO::PARAM_STR because it's the default option. Binding with bindParam will change the type of the bound variable to a string, which can lead to type errors.