PHP

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 программирование лучше, легче и быстрее! :)
Добавлено: 27 Августа 2013 05:44:16 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...