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

142
|
|
mobo
Андрей
Специализации: 0
|
|
|
PDO - модуль, позволяющий работать с различными базами данных, такими как MySQL от v3, PostgreSQL, SQLite от v2, ODBC, DB2, Oracle, Firebird.
Его особенность в упрощенном синтаксисе "общения" с БД и скорости работы, так как он написан на языке C, который как известно работает в несколько раз быстрее PHP модуля с использованием mysql_query(), а также быстрее других обработчиков и программ, для обращения к базам данных. Так как большинство использует MYSQL, поэтому эта статья посвящена именно этой базе...
Подключение к БД:
Новое соединение с базой данных:
| 1 | try {
|
| 2 | $bd = new PDO('mysql:host=хост;dbname=база', 'логин(или переменная)', 'пароль(или переменная)');
|
| 3 | }
|
| 4 | catch (Exception $e) {
|
| 5 | echo $e->getMessage();
|
| 6 | } |
try {
$bd = new PDO('mysql:host=хост;dbname=база', 'логин(или переменная)', 'пароль(или переменная)');
}
catch (Exception $e) {
echo $e->getMessage();
}
try - попытка подключения к базе (критической ошибки не будет), если подключение не прошло выведет ошибку которую выдаст база данных.
Закрытие соединения и освобождение ресурсов:
В PDO нет команды для того, чтобы освободить буфер запроса (mysql_free_result()), для этого можно просто присваивать NULL переменной запроса:
Запросы на изменение и добавление данных exec():
| 1 | $insert = $bd->exec('INSERT INTO `table` (`имя столбца`) VALUES("значение")'); |
$insert = $bd->exec('INSERT INTO `table` (`имя столбца`) VALUES("значение")');
Как вы можете заметить, большой разницы нет, по сравнению с mysql_query(), возвращает значение – количество затронутых рядов, или FALSE в случае ошибки.
| 1 | $update = $bd->exec('UPDATE `table` SET `имя столбца`="значение"'); |
$update = $bd->exec('UPDATE `table` SET `имя столбца`="значение"');
Экранирование символов query()
| 1 | $bd->quote($_POST['var']); |
$bd->quote($_POST['var']);
Выборка данных:
| 1 | $id = $bd->lastInsertId(); // последний auto_increment
|
| 2 |
|
| 3 | $sel = $bd->query('SELECT * FROM `table`;'); // значение FALSE в случае ошибки
|
| 4 |
|
| 5 | $res = $bd->query('SELECT * FROM `table`;');
|
| 6 | while ($row = $res->fetch(PDO::(FETCH_BOTH или FETCH_ASSOC или FETCH_NUM или FETCH_OBJ или FETCH_LAZY))) {
|
| 7 | ...
|
| 8 | } |
$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 - выборка объекта, которая подгружает данные только во время обращения к ним
| 1 | $res = $var(переменная запроса)->fetchColumn(); // выборка одной записи с запроса, если актуально
|
| 2 |
|
| 3 | $sel = 'SELECT * FROM `table`;';
|
| 4 | $var = $bd->query($sel)->fetchAll(PDO::FETCH_ASSOC); // выборка всех данных с таблицы |
$res = $var(переменная запроса)->fetchColumn(); // выборка одной записи с запроса, если актуально
$sel = 'SELECT * FROM `table`;';
$var = $bd->query($sel)->fetchAll(PDO::FETCH_ASSOC); // выборка всех данных с таблицы
Транзакции:
| 1 | $bd->beginTransaction();
|
| 2 | $bd->rollback(); // возвращает данные в исходную позицию (во время подключения) если не был вызван commit()
|
| 3 | $bd->commit(); // именяет данные в таблице |
$bd->beginTransaction();
$bd->rollback(); // возвращает данные в исходную позицию (во время подключения) если не был вызван commit()
$bd->commit(); // именяет данные в таблице
Информация о таблице:
Вся информация о столбцах:
| 1 | $tab = $bd->query($zapros);
|
| 2 | $num = $tab->columnCount();
|
| 3 | for ($i=0; $i < $num; $i++) {
|
| 4 | $dat = $num->getColumnMeta($i);
|
| 5 | } |
$tab = $bd->query($zapros);
$num = $tab->columnCount();
for ($i=0; $i < $num; $i++) {
$dat = $num->getColumnMeta($i);
}
Надеюсь эта статья помогла вам оптимизировать ваши запросы к бд на максимальную скорость обработки данных! Для пополнения этой статьи можете обратиться к её автору. Давайте сделаем PHP программирование лучше, легче и быстрее! :)