Самая распространенная на данный момент СУБД это 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:
$connect = new PDO('mysql:host=хост;dbname=название БД', 'логин', 'пароль');
Закрытие соединения:
$connect = null;
Запросы. Запросы в PDO могут быть двух видов: обычные и с плейсхолдерами. Запросы с плейсхолдерами рекомендуются для скорости и безопасности.
Рассмотрим обычные запросы. Они могут выполняться двумя способами: через метод query() и метод exec(). Обычно рекомендуется для получения данных из БД использовать метод query(), а для модификации данных — метод exec().
Например:
$res = $connect->query("SELECT * FROM posts");
Как не трудно догадаться этот запрос получает все данные из таблицы posts. Поэтому использовался метод query().
$res = $connect->exec("INSERT INTO posts VALUES (0, '$title', '$blog_post')"); $res = $connect->exec("UPDATE posts SET title = '$title', blog_post = '$blog_post'");
А эти запросы модифицируют информацию (вставка и обновление), поэтому здесь использовался метод exec().
Ну а теперь самое вкусное — подготовленные выражения, они же плейсхолдеры. И сразу пример:
$sql = $connect->prepare("UPDATE posts set title = '$title', blog_post = '$blog_post' WHERE id = ?"); $sql->bindValue(1, $_GET['id'], PDO::PARAM_INT); $sql->execute(); $result = $sql->fetch(PDO::FETCH_ASSOC);
Здесь в массив подставляется значение переменной $id, в которой хранится значение из GET-переменной. Оно подставляется на место знака вопроса в первом запросе. Вот таким вот образом происходит защита от SQL-иньекций.
Для экранирования символов, используется функция quote().
Теперь быстренько пройдемся по выборке данных:
$res = $connect->query("SELECT * FROM posts"); while ($row = $res->fetch(PDO::FETCH_ASSOC)) { // Переменной $row присвоится ассоциативный массив } while ($obj = $res->fetch(PDO::FETCH_OBJ)) { // переменной $obj присвоится объект }
На этом все. Это была лишь малая толика обзора возможностей PDO. Да и я не ставил перед собой цели, рассмотреть всех их, тем более я сам всего не знаю :). Я хотел лишь подтолкнуть вас на изучение такого замечательного расширения, как PDO. Дальше Гугл, Яндекс, Википедия и т.п. вам в помощь.