Настройка и использование PDO — расширения PHP Data Objects для работы с базами данных
Homepage:PDO
PDO (PHP Data Objects) - это уровень для доступа к базам данных, который обеспечивает унифицированные методы для доступа к различным базам данных. PDO появился в PHP начиная с версии 5.1.
Преимущества PDO:
- PDO работает быстрее, так как он написан на языке C;
- предоставляет готовый интерфейс взаимодействия с БД, независимо от типа БД. Т.е. вы можете писать в своих скриптах запросы для Движок БД MySQL, но при этом использовать базу данных Как пользоваться SQLite, в этом случае PDO эмулирует нужные функции своими силам;
- используя стандартные средства библиотеки PDO, можно организовать фильтрацию запросов в базу данных, проверку запросов по маске, проверку запросов на наличие определенных типов данных, что существенно снижает вероятность инъекции.
- PDO для каждого типа БД требует подключение драйвера.
<?php // Получить список драйверов, доступных в системе print_r(PDO::getAvailableDrivers()); ?>
- Закрытие соединения и освобождение ресурсов:
$bd = NULL;
- Метод query - режимы вывода PDOStatement::fetch:
$dbconn->query($sql)->fetch(PDO::FETCH_ASSOC);
- Метод quote - фильтрация строк. Экранирование символов при вставке в БД. PDO сама определит какой алгоритм экранирования применить в зависимости от драйвера БД.
// Фильтрация строк. Экранирование символов при вставке в БД $dbconn = new PDO("создали подключение"); $name = "O'Brain"; // Перед вставкой в БД нужно экранировать одинарную кавычку $name = $dsn->quote($name);// экранируем $sql = "INSERT INTO tbl(name) VALUES ($name)"; $res = $dbconn1->exec($sql); echo $res; // выведется кол-во обработанных строк
PDO MySQL
- Новое соединение с базой данных Движок БД MySQL:
try { $bd = new PDO('mysql:host=хост;dbname=база', 'логин(или переменная)', 'пароль(или переменная)'); }catch (PDOException $e){ print "Error!: " . $e->getMessage() . "<br />"; }
try - попытка подключения к базе (критической ошибки не будет), если подключение не прошло - будет выведена ошибка которую отдает непосредственно база данных MySQL.
- Подключение к MySQL с проверкой на наличие уже существующего подключения.
function PDOMySQLocal() {// connect to DB MySQL static $dbconn; if (is_null($dbconn)) { try { $host = '127.0.0.1'; $port = 3306; $dbname = 'yourdb'; $dsn = "mysql:host=$host;port=$port;dbname=$dbname"; $username = 'root'; $passwd = ''; $dbconn = new PDO($dsn, $username, $passwd); // $dbconn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { print "Error!: " . $e->getMessage() . "<br />"; } } return $dbconn; } $cdb = PDOMySQLocal(); $sql = 'SELECT * FROM Countries LIMIT 5;'; try { $res = $cdb->query($sql); } catch (PDOException $e) { print "Error!: " . $e->getMessage() . "<br />"; } $res->setFetchMode(PDO::FETCH_ASSOC); // устанавливаем режим выборки print_r($res->fetchAll());
PDO PostgreSQL
- Новое соединение с базой данных Использование и настройка PostgreSQL:
<?php try { $host = 'localhost'; $port = 5432; $dbname = 'postgres'; $dsn = "pgsql:host=$host;port=$port;dbname=$dbname"; $username = 'postgres'; $passwd = ''; $dbconn = new PDO($dsn, $username, $passwd); } catch (PDOException $e) { print "Error!: " . $e->getMessage() . "<br />"; } // Выполним тестовый SQL запрос try { $sql = 'Select * FROM pg_database'; echo '<pre>'; foreach ($dbconn->query($sql) as $row) { print_r($row); } } catch (PDOException $e) { print "Error!: " . $e->getMessage() . "<br />"; } ?>
- Подключение к PostgreSQL с проверкой на наличие уже существующего подключения. Эта проверка позволяет не открывать дополнительные соединения с базой данных, а использовать всегда единственное соединение с БД. Реализовано через статическую переменную.
function PDOPgSQL() {// connect to DB PostgreSQL static $dbconn; if (is_null($dbconn)) { try { $host = 'localhost'; $port = 5432; $dbname = 'postgres'; $dsn = "pgsql:host=$host;port=$port;dbname=$dbname"; $username = 'postgres'; $passwd = ''; $dbconn = new PDO($dsn, $username, $passwd); } catch (PDOException $e) { print "Error!: " . $e->getMessage() . "<br />"; } } return $dbconn; } $cdb = PDOPgSQL(); $sql = 'SELECT * FROM phrases'; $cdb->query($sql);
- Подключение к PostgreSQL с проверкой на наличие уже существующего подключения. Используя шаблон проектирования Singleton. Самый достойный вариант можно посмотреть у Tony Landis по ссылке PHP5 PDO Singleton Class или на github.
PDO SQLite
- Пример подключения к БД Как пользоваться SQLite (test.db).
try { $dbconn = new PDO("sqlite:test.db"); } catch (PDOException $e) { print "Error!: " . $e->getMessage(); } $dbconn= NULL; // закрыть соединение
Дополнительные ссылки PDO
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!
7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах