Разделы публикаций

 
     
 

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

mobo
142
    mobo mobo
Андрей
Специализации: 0

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 программирование лучше, легче и быстрее! :)

7
Просмотров: 8969
     

Новости inPHP.org Новости inPHP.org
30.12.2011   С наступающим Новым Годом!
Команда inPHP.org поздравляет всех посетителей сайта проекта с наступающим Новым Годом! Вероятно, многие участники проекта заметили некоторое затишье в уходящем году. Поверьте, в следующем всё будет несколько иначе!
31.12.2010   С Новым Годом!
Уважаемые коллеги, коллектив проекта inphp.org искренне поздравляет вас с наступающим Новым Годом!
27.05.2010   Технические работы.
По техническим причинам возможны кратковременные перебои в работе сайта проекта в период с 27.05.2010 по 1.06.2010.
02.03.2010   Доступ участников к разработке тестирований.
В тестовом режиме запущен функционал, позволяющий участникам проекта разрабатывать собственные тестирования. Разработанные сообществом тестирования не имеют ограничений официальной аккредитации и в любое время доступны любому участнику.
 
Содействуют развитию Содействуют развитию
Участники проекта Участники проекта
yanzhula
140
    yanzhula yanzhula
Антон Янжула
Специализации: 0
walker
20
    walker walker

Специализации: 0
mad_woo
60
    mad_woo mad_woo

Специализации: 0
dux
20
    dux dux

Специализации: 0
hermit
80
    hermit hermit

Специализации: 0
 
Статистика проекта Статистика проекта
Всего пользователей: 3648
Из них аккредитовано: 1468
Были сегодня: 2

УровеньПользователи
7742%
62376,5%
52075,7%
41945,3%
336510%
2401,1%
13509,6%
отсутствует218059,8%