It should be noted that PDO::FETCH_CLASS will call the constructor *after* setting the values (or calling __set).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.
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.
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)
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.)
It should be noted that PDO::FETCH_CLASS will call the constructor *after* setting the values (or calling __set).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#L600PDO::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.htmlPDO::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]
*/
?>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.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.