PDO: Установка атрибутов соединения

В PDO существуют функции, которые называются атрибутами соединения. Этот функционал мы можем использовать что бы изменять имена столбцов, преобразовать регистр и так далее. Весь перечень ниже.

Пример использования:

<?php
// configuration
$dbtype		= "sqlite";
$dbhost 	= "localhost";
$dbname		= "test";
$dbuser		= "root";
$dbpass		= "admin";

// database connection
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

// query
$conn->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER);
$sql = "SELECT * FROM books";
$q = $conn->prepare($sql);
$q->execute();

$r = $q->fetch(PDO::FETCH_ASSOC);

print_r($r);

//result:
//Array ( [ID] => 1 
//        [TITLE] => PHP AJAX 
//        [AUTHOR] => Andreas 
//        [DESCRIPTION] => This is good book for learning AJAX 
//        [ON_SALE] => 1 
//        [COVER] => )
?>

Хорошо, посмотрим строку 13:

$conn->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER);

В коде используется атрибут PDO::ATTR_CASE. Этот атрибут как указано выше управляет регистром имен столбцов возвращаемых в PDOStatement::fetch(). Это будет работать при условии что fetchMode установлен PDO :: FETCH_ASSOC или PDO :: FETCH_BOTH, потому что строка, возвращаемая в качестве массиву содержит столбцы индексируются по их имени. Из кода выше, получат результат:

Array ( [ID] => 1 
        [TITLE] => PHP AJAX 
        [AUTHOR] => Andreas 
        [DESCRIPTION] => This is good book for learning AJAX 
        [ON_SALE] => 1 
        [COVER] => )

Экспериментируйте и смотрите что будет получатся!

Перечень атрибутов:

  • PDO::ATTR_CASE: Изменить регистр имен.

    • PDO::CASE_LOWER: Имена таблиц в нижнем регистре.

    • PDO::CASE_NATURAL: Регистр имен возвращает СУБД.

    • PDO::CASE_UPPER: Имена таблиц в верхнем регистре.

  • PDO::ATTR_ORACLE_NULLS (допустимо для всех драйверов СУБД, а не только Oracle): Преобразование строк содержащих NULL и ничего не содержащих.

    • PDO::NULL_NATURAL: Без преобразования.

    • PDO::NULL_EMPTY_STRING: Все пустые строки конвертируются в NULL.

    • PDO::NULL_TO_STRING: NULL конвертируется в пустые строки.

  • PDO::ATTR_STRINGIFY_FETCHES: При выборке конвертирует цифровые типы в строковые. Требует bool.

  • PDO::ATTR_STATEMENT_CLASS: Установит пользовательский класс наследующий PDOStatement. Не может использоваться постоянно. Требуется array(string classname, array(mixed constructor_args)).

  • PDO::ATTR_TIMEOUT: Задает длительность ожидания в секундах. Не все драйверы поддерживают эту опцию, и его значение может отличаться от драйвера к драйверу. Например, SQLite будет ждать до этого значения, прежде чем давать на получение блокировки записи, но и другие водители могут интерпретировать это как соединения или интервала тайм-аута для чтения. Требует int.

  • PDO::ATTR_AUTOCOMMIT (OCI, Firebird и MySQL): Автоматически выполняет единичные запросы.

  • PDO::ATTR_EMULATE_PREPARES Включает или отключает эмуляцию подготовленных заявлений. Некоторые драйверы не поддерживают родные подготовленные заявления или имеет ограниченную поддержку для них. Используйте этот параметр, чтобы заставить PDO либо всегда подражать подготовленные заявления (если это TRUE), или попробовать использовать родной подготовленные заявления (если FALSE). Он всегда будет вернуться к эмуляции подготовленное заявление, если водитель не может успешно подготовиться текущий запрос. Требует bool.

  • PDO::MYSQL_ATTR_USE_BUFFERED_QUERY (только MySQL): Использует буфер запросов.

  • PDO::ATTR_DEFAULT_FETCH_MODE: Установить по умолчанию режим извлечения. Описание режимов доступно по ссылке PDOStatement::fetch() или в записи Режимы извлечения.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.