PHP 8.3.28 Released!

Предопределённые константы

Содержание

Следующие константы определяются модулем и доступны, только если модуль либо собрали в PHP, либо динамически загрузили при выполнении кода.

Курсоры

См. также описание константы PDO::ATTR_CURSOR_NAME.

PDO::FETCH_ORI_NEXT (int)
Предписывает выбрать следующую строку из набора результатов. Константа действительна только для прокручиваемых курсоров.
PDO::FETCH_ORI_PRIOR (int)
Предписывает выбирать предыдущую строку из набора результатов. Константа действительна только для прокручиваемых курсоров.
PDO::FETCH_ORI_FIRST (int)
Предписывает выбирать первую строку из набора результатов. Константа действительна только для прокручиваемых курсоров.
PDO::FETCH_ORI_LAST (int)
Предписывает выбирать последнюю строку из набора результатов. Константа действительна только для прокручиваемых курсоров.
PDO::FETCH_ORI_ABS (int)
Предписывает выбирать строку с заданным номером из набора результатов. Константа действительна только для прокручиваемых курсоров.
PDO::FETCH_ORI_REL (int)
Предписывает выбирать строку из набора результатов относительно текущего положения курсора. Константа действительна только для прокручиваемых курсоров.
PDO::CURSOR_FWDONLY (int)
Предписывает создавать объект PDOStatement с последовательным курсором. Последовательные курсоры выбираются по умолчанию, поскольку это наиболее общий и быстрый в PHP шаблон доступа к данным.
PDO::CURSOR_SCROLL (int)
Предписывает создавать объект PDOStatement с прокручиваемым курсором. Передача констант семейства PDO::FETCH_ORI_* управляет поведением курсора при выборке строк из набора результатов.

Другие константы

PDO::PARAM_BOOL (int)
Представляет логический тип данных.
PDO::PARAM_NULL (int)
Представляет тип данных NULL в SQL.
PDO::PARAM_INT (int)
Представляет тип данных INTEGER в SQL.
PDO::PARAM_STR (int)
Представляет CHAR, VARCHAR и другие строковые типы данных в SQL.
PDO::PARAM_STR_NATL (int)
Флаг для обозначения строк в национальных кодировках. Константа доступна с PHP 7.2.0.
PDO::PARAM_STR_CHAR (int)
Флаг для обозначения строк в кодировках по умолчанию для БД. Константа доступна с PHP 7.2.0.
PDO::PARAM_LOB (int)
Представляет в БД тип данных для больших объектов (англ. Large Objects, LOB) в SQL.
PDO::PARAM_STMT (int)
Представляет тип recordset. Не поддерживается текущими драйверами.
PDO::PARAM_INPUT_OUTPUT (int)
Указывает, что параметр хранимой процедуры работает в режиме INOUT. Константу указывают через побитовое ИЛИ с константой семейства PDO::PARAM_*.
PDO::ATTR_AUTOCOMMIT (int)
Со значением false модуль PDO попытается отключить автоматическую фиксацию изменений в базе данных, чтобы подключение начало транзакцию.
PDO::ATTR_PREFETCH (int)
Баланс между расходом памяти и скоростью работы с базой данных регулируют путём изменения размера буфера предвыборки. Не каждая комбинация «база — драйвер» поддерживает изменение размера этого буфера. Чем больше этот размер, тем выше быстродействие, но и выше расход памяти.
PDO::ATTR_TIMEOUT (int)
Устанавливает время в секундах, в течение которого требуется завершить обмен с базой данных.
PDO::ATTR_ERRMODE (int)
Подробно об этом атрибуте рассказывает раздел «Ошибки и обработка ошибок».
PDO::ATTR_SERVER_VERSION (int)
Атрибут доступен только для чтения; константа возвращает информацию о версии сервера баз данных, к которому подключён модуль PDO.
PDO::ATTR_CLIENT_VERSION (int)
Атрибут доступен только для чтения; константа хранит информацию о версии клиентских библиотек, с которыми взаимодействует драйвер модуля PDO.
PDO::ATTR_SERVER_INFO (int)
Атрибут доступен только для чтения; константа возвращает метаинформацию о сервере баз данных, к которому подключён модуль PDO.
PDO::ATTR_CONNECTION_STATUS (int)
PDO::ATTR_CASE (int)
Приводит названия столбцов к регистру, который определяют константами семейства PDO::CASE_*.
PDO::ATTR_CURSOR_NAME (int)
Получает или устанавливает название курсора. Константа полезна при работе с прокручиваемыми курсорами и позиционными обновлениями.
PDO::ATTR_CURSOR (int)
Выбирает типа курсора. Драйвер модуля PDO поддерживает два типа курсоров: PDO::CURSOR_FWDONLY и PDO::CURSOR_SCROLL. Тип PDO::CURSOR_SCROLL указывают, только если требуется прокручиваемый курсор, иначе выбирают режим последовательного курсора — PDO::CURSOR_FWDONLY.
PDO::ATTR_DRIVER_NAME (int)
Возвращает название драйвера.

Пример #1 Извлечение названия драйвера через атрибут PDO::ATTR_DRIVER_NAME

<?php

if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') {
echo
"Работаем с драйвером mysql; выполняем операцию, специфичную для драйвера mysql\n";
}
PDO::ATTR_ORACLE_NULLS (int)
При выборке данных преобразует пустые строки в значения с SQL-типом NULL.
PDO::ATTR_PERSISTENT (int)
Запрашивать постоянное соединение вместо установки нового подключения. Подробнее об атрибуте рассказывает раздел «Подключения и управление подключениями».
PDO::ATTR_STATEMENT_CLASS (int)
Устанавливает название класса, в виде экземпляров которого возвращаются результаты SQL-запросов.
PDO::ATTR_FETCH_CATALOG_NAMES (int)
Предписывает предварять названия столбцов названиями каталогов в наборе результатов. Название столбца и название каталога разделяют символом точки. Поддержка атрибута выполняется на уровне драйвера; атрибут поддерживается не каждым драйвером.
PDO::ATTR_FETCH_TABLE_NAMES (int)
Предписывает предварять названия столбцов названиями исходных таблиц в наборе результатов. Название столбца и название таблицы разделяют символом точки. Поддержка атрибута выполняется на уровне драйвера; атрибут поддерживается не каждым драйвером.
PDO::ATTR_STRINGIFY_FETCHES (int)
Заставляет значения выборки, кроме null, обрабатываться как строки. Значения null не изменяются, если только для атрибута PDO::ATTR_ORACLE_NULLS не установили значение PDO::NULL_TO_STRING.
PDO::ATTR_MAX_COLUMN_LEN (int)
Устанавливает максимум длины названия столбца.
PDO::ATTR_DEFAULT_FETCH_MODE (int)
PDO::ATTR_EMULATE_PREPARES (int)
PDO::ATTR_DEFAULT_STR_PARAM (int)
Устанавливает тип строкового параметра по умолчанию. Атрибут принимает значение в виде константы PDO::PARAM_STR_NATL или PDO::PARAM_STR_CHAR. Константа доступна с PHP 7.2.0.
PDO::ERRMODE_SILENT (int)
Подавляет генерацию ошибок и исключений при сбое. Разработчик сам проверяет, не возникла ли ошибка. До PHP 8.0.0 этот режим обработки ошибок применялся по умолчанию. Подробнее об атрибуте рассказывает раздел «Ошибки и обработка ошибок».
PDO::ERRMODE_WARNING (int)
Предписывает выдавать сообщение о PHP-ошибке уровня E_WARNING. Подробнее об атрибуте рассказывает раздел «Ошибки и обработка ошибок».
PDO::ERRMODE_EXCEPTION (int)
Предписывает выбрасывать исключение PDOException при ошибках. Подробнее об атрибуте рассказывает раздел «Ошибки и обработка ошибок».
PDO::CASE_NATURAL (int)
Сохраняет регистр названий столбцов в результатах драйвера базы данных.
PDO::CASE_LOWER (int)
Приводит названия столбцов к нижнему регистру.
PDO::CASE_UPPER (int)
Приводит названия столбцов к верхнему регистру.
PDO::NULL_NATURAL (int)
PDO::NULL_EMPTY_STRING (int)
PDO::NULL_TO_STRING (int)
PDO::ERR_NONE (string)
Значение константы соответствует SQLSTATE-коду '00000', который указывает на успешное выполнение SQL-запроса, без ошибок и предупреждений. Константа помогает убедиться в отсутствии ошибок через сравнение значения константы с SQLSTATE-кодами из методов PDO::errorCode() и PDOStatement::errorCode(), хотя о появлении ошибки и так станет известно, когда сам результат выполнения PDO-метода укажет на состояние ошибки.
PDO::PARAM_EVT_ALLOC (int)
Сигнализирует о событии выделения памяти для параметра запроса.
PDO::PARAM_EVT_FREE (int)
Сигнализирует о событии освобождения памяти, выделенной для параметра запроса.
PDO::PARAM_EVT_EXEC_PRE (int)
Идентифицирует событие, которое срабатывает перед выполнением подготовленного SQL-запроса.
PDO::PARAM_EVT_EXEC_POST (int)
Идентифицирует событие, которое срабатывает после выполнения подготовленного SQL-запроса.
PDO::PARAM_EVT_FETCH_PRE (int)
Идентифицирует событие, которое срабатывает перед извлечением данных из результата запроса.
PDO::PARAM_EVT_FETCH_POST (int)
Идентифицирует событие, которое срабатывает после извлечения данных из результата запроса.
PDO::PARAM_EVT_NORMALIZE (int)
Идентифицирует событие, которое срабатывает при регистрации драйвером привязанного параметра перед нормализацией названия параметра.
PDO::SQLITE_DETERMINISTIC (int)
Указывает на детерминированность функции, которую создали методом PDO::sqliteCreateFunction(). Детерминированная функция всегда возвращает один и тот же результат при одинаковых входных данных в пределах одной SQL-инструкции. Константа доступна с PHP 7.1.4.
Добавить

Примечания пользователей 6 notes

up
20
sam at xnet dot tk
12 years ago
It should be noted that PDO::FETCH_CLASS will call the constructor *after* setting the values (or calling __set).
up
6
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
9
Oleg Andreyev
9 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
1
happy dot job7348 at fastmail dot com
1 year 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
2
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
1
todd at toddwiggins dot com dot au
5 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.
To Top