PDO - Самый быстрый в работе с базами данных

PDO - модуль, позволяющий работать с различными базами данных, такими как MySQL от v3, PostgreSQL, SQLite от v2, ODBC, DB2, Oracle, Firebird. Его особенность в упрощенном синтаксисе "общения" с БД и скорости работы, так как он написан на языке C, который как известно работает в несколько раз быстрее PHP модуля с использованием mysql_query(), а также быстрее других обработчиков и программ, для обращения к базам данных. Так как большинство использует MYSQL, поэтому эта статья посвящена именно этой базе...

Подключение к БД:

Новое соединение с базой данных:

try { 
     $bd = new PDO('mysql:host=хост;dbname=база', 'логин(или переменная)', 'пароль(или переменная)'); 
} 
catch (Exception $e) { 
     echo $e->getMessage(); 
}

try - попытка подключения к базе (критической ошибки не будет), если подключение не прошло выведет ошибку которую выдаст база данных.

Закрытие соединения и освобождение ресурсов:

$bd = NULL;

В PDO нет команды для того, чтобы освободить буфер запроса (mysql_free_result()), для этого можно просто присваивать NULL переменной запроса:

$select = NULL;

Запросы на изменение и добавление данных exec():

$insert = $bd->exec('INSERT INTO `table` (`имя столбца`) VALUES("значение")');

Как вы можете заметить, большой разницы нет, по сравнению с mysql_query(), возвращает значение – количество затронутых рядов, или FALSE в случае ошибки.

$update = $bd->exec('UPDATE `table` SET `имя столбца`="значение"');

Экранирование символов query()

$bd->quote($_POST['var']); 

Выборка данных:

$id = $bd->lastInsertId(); // последний auto_increment 

$sel = $bd->query('SELECT * FROM `table`;'); // значение FALSE в случае ошибки

$res = $bd->query('SELECT * FROM `table`;'); 
while ($row = $res->fetch(PDO::(FETCH_BOTH или FETCH_ASSOC или FETCH_NUM или FETCH_OBJ или FETCH_LAZY))) { 
     ...
}

  • FETCH_NUM - массив с ключами чисел
  • FETCH_ASSOC - ассоциативный массив с названием столбцов
  • FETCH_BOTH - числовой и ассоциативный массив
  • FETCH_OBJ - выборка объекта (если актуально данным выборки)
  • FETCH_LAZY - выборка объекта, которая подгружает данные только во время обращения к ним

$res = $var(переменная запроса)->fetchColumn(); // выборка одной записи с запроса, если актуально

$sel = 'SELECT * FROM `table`;'; 
$var = $bd->query($sel)->fetchAll(PDO::FETCH_ASSOC); // выборка всех данных с таблицы

Транзакции:

$bd->beginTransaction(); 
$bd->rollback(); // возвращает данные в исходную позицию (во время подключения) если не был вызван commit() 
$bd->commit(); // именяет данные в таблице

Информация о таблице:

Вся информация о столбцах:

$tab = $bd->query($zapros); 
$num = $tab->columnCount(); 
for ($i=0; $i < $num; $i++) { 
     $dat = $num->getColumnMeta($i); 
}

Надеюсь эта статья помогла вам оптимизировать ваши запросы к бд на максимальную скорость обработки данных! Для пополнения этой статьи можете обратиться к её автору. Давайте сделаем PHP программирование лучше, легче и быстрее! :)

Записи