Добро пожаловать, Гость!
Просмотр записи
Jvk35 создал дневник Знакомство с PDO новичкам)) в категории Полезные коды 25 Авг 2015
Самая распространенная на данный момент СУБД это MySQL и соответственно все юзают именно ее.
В PHP 5 существует расширение PDO (PHP Data Objects). Что же это за такое расширение? PDO предоставляет общий интерфейс к различным базам данных (SQLite, MySQL, PosgreSQL, etc), т.е. служит неким адаптером. К преимуществом PDO можно отнести, то, что оно написано на C, (впрочем, почти как и все расширения) с учетом всех нововведений PHP 5.1. Вообщем PDO – рулез . Ну и чтобы нам реальным пацанам не было стремно перед другими такими же пацанами, мы должны юзать или хотя бы знать как юзать PDO. Что же будем учиться .
Для начала нам надо убедится, что у нас имеется библиотека PDO. Для этого смотрим вывод функции phpinfo(). У меня на Денвере (да, я юзаю Денвер) установлен драйвер php_pdo_mysql.dll. В принципе мне этого достаточно. Вам должно быть тоже, если только вы не захотите использовать, к примеру SQLite или PostgreSQL. В таком случае придется самостоятельно скачать дополнительные драйвера. Итак, будем считать, что все готово и приступим к самому интересному – кодингу.
Подключение к MySQL:
<?php
$connect = new PDO('mysql:host=хост;dbname=название БД', 'логин', 'пароль');
Закрытие соединения:
$connect = null;
?>
Во многих приложениях может оказаться полезным использование постоянных соединений к базам данных. Постоянные соединения не закрываются при завершении работы скрипта, они кэшируются и используются повторно, когда другой скрипт запрашивает соединение с теми же учетными данными. Постоянные соединения позволяют избежать создания новых подключений каждый раз, когда требуется обмен данными с базой, что в результате дает прирост скорости работы таких приложений.
<?php
$connect = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
PDO::ATTR_PERSISTENT => true
));
?>
Запросы. Запросы в PDO могут быть двух видов: обычные и с плейсхолдерами. Запросы с плейсхолдерами рекомендуются для скорости и безопасности.
Рассмотрим обычные запросы. Они могут выполняться двумя способами: через метод query() и метод exec(). Обычно рекомендуется для получения данных из БД использовать метод query(), а для модификации данных – метод exec().
Например:
<?php
$res = $connect->query("SELECT * FROM posts");
?>
Как не трудно догадаться этот запрос получает все данные из таблицы posts. Поэтому использовался метод query().
<?php
$res = $connect->exec("INSERT INTO posts VALUES (0, '$title', '$blog_post')");
$res = $connect->exec("UPDATE posts SET title = '$title', blog_post = '$blog_post'");
?>
А эти запросы модифицируют информацию (вставка и обновление), поэтому здесь использовался метод exec().
Ну а теперь самое вкусное – подготовленные выражения, они же плейсхолдеры. И сразу пример:
<?php
$id = $_GET['id'];
$res = $connect->prepare("UPDATE posts set title = '$title', blog_post = '$blog_post' WHERE id = ?");
$res = $connect->execute(array($id));
?>
Здесь в массив подставляется значение переменной $id, в которой хранится значение из GET-переменной. Оно подставляется на место знака вопроса в первом запросе. Вот таким ввот образом происходит защита от SQL-иньекций.
Для экранирования символов, используется функция quote().
Теперь быстренько пройдемся по выборке данных:
<?PHP
$res = $connect->query("SELECT * FROM posts");
while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
// Переменной $row присвоится ассоциативный массив
}
while ($obj = $res->fetch(PDO::FETCH_OBJ)) {
// переменной $obj присвоится объект
} ?>
На этом все. Это была лишь малая толика обзора возможностей PDO.
Я хотел лишь подтолкнуть вас на изучение такого замечательного расширения, как PDO. Дальше Гугл, Яндекс, Википедия и т.п. вам в помощь.
Самая распространенная на данный момент СУБД это MySQL и соответственно все юзают именно ее.
В PHP 5 существует расширение PDO (PHP Data Objects). Что же это за такое расширение? PDO предоставляет общий интерфейс к различным базам данных (SQLite, MySQL, PosgreSQL, etc), т.е. служит неким адаптером. К преимуществом PDO можно отнести, то, что оно написано на C, (впрочем, почти как и все расширения) с учетом всех нововведений PHP 5.1. Вообщем PDO – рулез . Ну и чтобы нам реальным пацанам не было стремно перед другими такими же пацанами, мы должны юзать или хотя бы знать как юзать PDO. Что же будем учиться .
Для начала нам надо убедится, что у нас имеется библиотека PDO. Для этого смотрим вывод функции phpinfo(). У меня на Денвере (да, я юзаю Денвер) установлен драйвер php_pdo_mysql.dll. В принципе мне этого достаточно. Вам должно быть тоже, если только вы не захотите использовать, к примеру SQLite или PostgreSQL. В таком случае придется самостоятельно скачать дополнительные драйвера. Итак, будем считать, что все готово и приступим к самому интересному – кодингу.
Подключение к MySQL:
<?php
$connect = new PDO('mysql:host=хост;dbname=название БД', 'логин', 'пароль');
Закрытие соединения:
$connect = null;
?>
Во многих приложениях может оказаться полезным использование постоянных соединений к базам данных. Постоянные соединения не закрываются при завершении работы скрипта, они кэшируются и используются повторно, когда другой скрипт запрашивает соединение с теми же учетными данными. Постоянные соединения позволяют избежать создания новых подключений каждый раз, когда требуется обмен данными с базой, что в результате дает прирост скорости работы таких приложений.
<?php
$connect = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
PDO::ATTR_PERSISTENT => true
));
?>
Запросы. Запросы в PDO могут быть двух видов: обычные и с плейсхолдерами. Запросы с плейсхолдерами рекомендуются для скорости и безопасности.
Рассмотрим обычные запросы. Они могут выполняться двумя способами: через метод query() и метод exec(). Обычно рекомендуется для получения данных из БД использовать метод query(), а для модификации данных – метод exec().
Например:
<?php
$res = $connect->query("SELECT * FROM posts");
?>
Как не трудно догадаться этот запрос получает все данные из таблицы posts. Поэтому использовался метод query().
<?php
$res = $connect->exec("INSERT INTO posts VALUES (0, '$title', '$blog_post')");
$res = $connect->exec("UPDATE posts SET title = '$title', blog_post = '$blog_post'");
?>
А эти запросы модифицируют информацию (вставка и обновление), поэтому здесь использовался метод exec().
Ну а теперь самое вкусное – подготовленные выражения, они же плейсхолдеры. И сразу пример:
<?php
$id = $_GET['id'];
$res = $connect->prepare("UPDATE posts set title = '$title', blog_post = '$blog_post' WHERE id = ?");
$res = $connect->execute(array($id));
?>
Здесь в массив подставляется значение переменной $id, в которой хранится значение из GET-переменной. Оно подставляется на место знака вопроса в первом запросе. Вот таким ввот образом происходит защита от SQL-иньекций.
Для экранирования символов, используется функция quote().
Теперь быстренько пройдемся по выборке данных:
<?PHP
$res = $connect->query("SELECT * FROM posts");
while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
// Переменной $row присвоится ассоциативный массив
}
while ($obj = $res->fetch(PDO::FETCH_OBJ)) {
// переменной $obj присвоится объект
} ?>
На этом все. Это была лишь малая толика обзора возможностей PDO.
Я хотел лишь подтолкнуть вас на изучение такого замечательного расширения, как PDO. Дальше Гугл, Яндекс, Википедия и т.п. вам в помощь.
DCMS-Social.ru - движок социальной сети, вап и веб мастерская, файло-обменник и форум.
Статистика DCMS-Social.ru: Пользователей - 14967, тем на форуме - 30292, сообщений - 298885