CakeFest 2024: The Official CakePHP Conference

Constantes pré-definidas

As contantes 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.

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 desde o PHP 7.2.0
PDO::PARAM_STR_CHAR (int)
Sinaliza que uma string usa o conjunto de caracteres regular. Disponível desde o 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. Você deve combinar esse valor com um tipo de dado explícito PDO::PARAM_*.
PDO::FETCH_DEFAULT (int)
Especifica que o modo de busca padrão deve ser usado. Disponível a partir do PHP 8.0.7.
PDO::FETCH_LAZY (int)
Especifica que o método de busca deve retornar cada linha como um objeto com nomes de propriedades que correspondem aos nomes das colunas retornadas no conjunto de resultados. PDO::FETCH_LAZY retorna um objeto PDORow que cria os nomes das propriedades do objeto conforme eles são acessados. Não válido dentro de PDOStatement::fetchAll().
PDO::FETCH_ASSOC (int)
Especifica que o método fetch deve retornar cada linha como um array indexado pelo nome da coluna conforme retornado no conjunto de resultados correspondente. Se o conjunto de resultados contiver várias colunas com o mesmo nome, PDO::FETCH_ASSOC retorna apenas um único valor por nome de coluna.
PDO::FETCH_NAMED (int)
Especifica que o método fetch deve retornar cada linha como um array indexado pelo nome da coluna conforme retornado no conjunto de resultados correspondente. Se o conjunto de resultados contiver várias colunas com o mesmo nome, PDO::FETCH_NAMED retorna um array de valores por nome.
PDO::FETCH_NUM (int)
Especifica que o método fetch deve retornar cada linha como um array indexado pelo número da coluna conforme retornado no conjunto de resultados correspondente, começando na coluna 0.
PDO::FETCH_BOTH (int)
Especifica que o método fetch deve retornar cada linha como um array indexado tanto pelo nome quanto pelo número da coluna conforme retornado no conjunto de resultados correspondente, começando na coluna 0.
PDO::FETCH_OBJ (int)
Especifica que o método fetch deve retornar cada linha como um objeto com nomes de propriedade que correspondem aos nomes das colunas retornadas no conjunto de resultados.
PDO::FETCH_BOUND (int)
Especifica que o método fetch deve retornar TRUE e atribuir os valores das colunas no conjunto de resultados às variáveis PHP às quais foram vinculadas com os métodos PDOStatement::bindParam() ou PDOStatement::bindColumn().
PDO::FETCH_COLUMN (int)
Especifica que o método fetch deve retornar apenas uma única coluna solicitada da próxima linha no conjunto de resultados.
PDO::FETCH_CLASS (int)
Especifica que o método fetch deve retornar uma nova instância da classe solicitada, mapeando as colunas para propriedades nomeadas na classe.

Nota: O método mágico __set() é chamado se a propriedade não existir na classe solicitada

PDO::FETCH_INTO (int)
Especifica que o método fetch deve atualizar uma instância existente da classe solicitada, mapeando as colunas para propriedades nomeadas na classe.
PDO::FETCH_FUNC (int)
Permite personalizar completamente a maneira como os dados são tratados sob demanda (válido apenas dentro de PDOStatement::fetchAll()).
PDO::FETCH_GROUP (int)
Agrupa o retorno por valores. Geralmente combinado com PDO::FETCH_COLUMN ou PDO::FETCH_KEY_PAIR.
PDO::FETCH_UNIQUE (int)
Busca apenas os valores únicos.
PDO::FETCH_KEY_PAIR (int)
Busca um resultado de duas colunas em um array onde a primeira coluna é uma chave e a segunda coluna é o valor.
PDO::FETCH_CLASSTYPE (int)
Determina o nome da classe a partir do valor da primeira coluna.
PDO::FETCH_SERIALIZE (int)
Como PDO::FETCH_INTO, mas o objeto é fornecido como uma string serializada. O construtor da classe nunca é chamado se este sinalizador estiver definido. Obsoleto a partir do PHP 8.1.0.
PDO::FETCH_PROPS_LATE (int)
Chama o construtor antes de definir as propriedades.
PDO::ATTR_AUTOCOMMIT (int)
Se esse valor for false, o PDO tenta desativar o autocommit para que a conexão inicie uma transação.
PDO::ATTR_PREFETCH (int)
Definir o tamanho do prefetch permite equilibrar a velocidade contra o uso de memória para sua aplicação. Nem todas as combinações de banco de dados/driver suportam a definição do tamanho do prefetch. Um tamanho de prefetch maior resulta em um aumento de desempenho com o custo de maior uso de memória.
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 especificado 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 apenas PDO::CURSOR_FWDONLY e PDO::CURSOR_SCROLL. Mantenha PDO::CURSOR_FWDONLY a menos que saiba que precisa de um cursor rolável.
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 de que as declarações são retornadas.
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 ponto decimal (.). O suporte deste atributo é no nível do driver; pode não ser suportado pelo seu driver.
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 ponto decimal (.). O suporte deste atributo é no nível do driver; pode não ser suportado pelo seu driver.
PDO::ATTR_STRINGIFY_FETCHES (int)
Força todos os valores buscados a serem tratados como strings.
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 (int)
PDO::ATTR_DEFAULT_STR_PARAM (int)
Define o tipo de parâmetro de string padrão, que pode ser um dos PDO::PARAM_STR_NATL e PDO::PARAM_STR_CHAR. Disponível desde o PHP 7.2.0.
PDO::ERRMODE_SILENT (int)
Não gera um erro ou exceção se ocorrer um erro. O desenvolvedor é esperado para verificar explicitamente os erros. Este é 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. 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::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álido apenas para cursores roláveis.
PDO::FETCH_ORI_REL (int)
Fetch the requested row by relative position from the current position of the cursor in the result set. Valid only for scrollable cursors.
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.
PDO::ERR_NONE (string)
Corresponde a SQLSTATE '00000', significando que a instrução SQL foi emitida com sucesso sem erros ou avisos. Esta constante é para sua conveniência ao verificar PDO::errorCode() ou PDOStatement::errorCode() para determinar se ocorreu um erro. Você geralmente saberá se este for o caso examinando o código de retorno do método que gerou a condição de erro de qualquer maneira.
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)
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.)
add a note

User Contributed Notes 8 notes

up
21
sam at xnet dot tk
11 years ago
It should be noted that PDO::FETCH_CLASS will call the constructor *after* setting the values (or calling __set).
up
5
kevin at kevinlocke dot name
4 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
4
todd at toddwiggins dot com dot au
4 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
2
Sbastien
3 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
5
Oleg Andreyev
7 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
0
happy dot job7348 at fastmail dot com
2 months 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.
up
0
Rexana
1 year ago
Reference for PDO MySQL constants Todd mentioned have moved to here: https://www.php.net/manual/en/ref.pdo-mysql.php

This includes documentation on constants like PDO::MYSQL_ATTR_SSL_CA, PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT, and more.
up
-5
ko dot izawa at gmail dot com
7 years ago
When you use REAL type column on SQLite, your setting of pdo parameter of bindValue() is PDO::PARAM_STR.

'''
$stmt->bindValue(':elapse_time', $e_time, PDO::PARAM_STR);
'''
To Top