Различия
Показаны различия между двумя версиями страницы.
— | pdo [2025/07/06 12:39] (текущий) – создано - внешнее изменение 127.0.0.1 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== Настройка и использование PDO — расширения PHP Data Objects для работы с базами данных ====== | ||
+ | ~~Title: PDO PHP ~~ | ||
+ | {{htmlmetatags> | ||
+ | metatag-description=(Класс PDO. Примеры PDO на PHP для PostgreSQL, MySQL, SQLite. Что такое php pdo? Преимущества PDO. Как Перейти на использование PHP PDO.) | ||
+ | }} | ||
+ | {{ :: | ||
+ | |||
+ | Homepage: | ||
+ | |||
+ | **PDO** (PHP Data Objects) - это уровень для доступа к базам данных, | ||
+ | |||
+ | **Преимущества PDO:** | ||
+ | * PDO работает быстрее, | ||
+ | * предоставляет готовый интерфейс взаимодействия с БД, независимо от типа БД. Т.е. вы можете писать в своих скриптах запросы для [[MySQL]], но при этом использовать базу данных [[SQLite]], в этом случае PDO эмулирует нужные функции своими силам; | ||
+ | * используя стандартные средства библиотеки PDO, можно организовать фильтрацию запросов в базу данных, | ||
+ | |||
+ | * PDO для каждого типа БД требует подключение драйвера.< | ||
+ | <?php | ||
+ | // Получить список драйверов, | ||
+ | print_r(PDO:: | ||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | * **Закрытие соединения** и освобождение ресурсов: | ||
+ | $bd = NULL; | ||
+ | </ | ||
+ | * **Метод query - режимы вывода** [[http:// | ||
+ | $dbconn-> | ||
+ | </ | ||
+ | * **Метод quote - фильтрация строк**. Экранирование символов при вставке в БД. PDO сама определит какой алгоритм экранирования применить в зависимости от драйвера БД.< | ||
+ | // Фильтрация строк. Экранирование символов при вставке в БД | ||
+ | $dbconn = new PDO(" | ||
+ | $name = " | ||
+ | |||
+ | $name = $dsn-> | ||
+ | |||
+ | $sql = " | ||
+ | $res = $dbconn1-> | ||
+ | echo $res; // выведется кол-во обработанных строк | ||
+ | </ | ||
+ | ====== PDO MySQL ====== | ||
+ | * **Новое соединение** с базой данных [[MySQL]]:< | ||
+ | try { | ||
+ | $bd = new PDO(' | ||
+ | }catch (PDOException $e){ | ||
+ | print " | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | try - попытка подключения к базе (критической ошибки не будет), | ||
+ | * **Подключение к MySQL** с проверкой на наличие уже существующего подключения.< | ||
+ | function PDOMySQLocal() {// connect to DB MySQL | ||
+ | static $dbconn; | ||
+ | if (is_null($dbconn)) { | ||
+ | |||
+ | try { | ||
+ | $host = ' | ||
+ | $port = 3306; | ||
+ | $dbname = ' | ||
+ | $dsn = " | ||
+ | $username = ' | ||
+ | $passwd = ''; | ||
+ | $dbconn = new PDO($dsn, $username, $passwd); | ||
+ | // $dbconn-> | ||
+ | } catch (PDOException $e) { | ||
+ | print " | ||
+ | } | ||
+ | } | ||
+ | return $dbconn; | ||
+ | } | ||
+ | |||
+ | $cdb = PDOMySQLocal(); | ||
+ | $sql = ' | ||
+ | try { | ||
+ | $res = $cdb-> | ||
+ | } catch (PDOException $e) { | ||
+ | print " | ||
+ | } | ||
+ | $res-> | ||
+ | print_r($res-> | ||
+ | </ | ||
+ | ====== PDO PostgreSQL ====== | ||
+ | * **Новое соединение** с базой данных [[PostgreSQL]]:< | ||
+ | <?php | ||
+ | |||
+ | try { | ||
+ | $host = ' | ||
+ | $port = 5432; | ||
+ | $dbname = ' | ||
+ | $dsn = " | ||
+ | $username = ' | ||
+ | $passwd = ''; | ||
+ | $dbconn = new PDO($dsn, $username, $passwd); | ||
+ | } catch (PDOException $e) { | ||
+ | print " | ||
+ | } | ||
+ | |||
+ | // Выполним тестовый SQL запрос | ||
+ | try { | ||
+ | $sql = ' | ||
+ | echo '< | ||
+ | |||
+ | foreach ($dbconn-> | ||
+ | print_r($row); | ||
+ | } | ||
+ | } catch (PDOException $e) { | ||
+ | print " | ||
+ | } | ||
+ | |||
+ | ?> | ||
+ | </ | ||
+ | * **Подключение к PostgreSQL с проверкой на наличие уже существующего подключения**. Эта проверка позволяет не открывать дополнительные соединения с базой данных, | ||
+ | function PDOPgSQL() {// connect to DB PostgreSQL | ||
+ | static $dbconn; | ||
+ | if (is_null($dbconn)) { | ||
+ | |||
+ | try { | ||
+ | $host = ' | ||
+ | $port = 5432; | ||
+ | $dbname = ' | ||
+ | $dsn = " | ||
+ | $username = ' | ||
+ | $passwd = ''; | ||
+ | $dbconn = new PDO($dsn, $username, $passwd); | ||
+ | } catch (PDOException $e) { | ||
+ | print " | ||
+ | } | ||
+ | } | ||
+ | |||
+ | return $dbconn; | ||
+ | } | ||
+ | |||
+ | $cdb = PDOPgSQL(); | ||
+ | $sql = ' | ||
+ | $cdb-> | ||
+ | </ | ||
+ | * **Подключение к PostgreSQL с проверкой на наличие уже существующего подключения**. Используя шаблон проектирования Singleton. Самый достойный вариант можно посмотреть у Tony Landis по ссылке [[http:// | ||
+ | |||
+ | ====== PDO SQLite ====== | ||
+ | * Пример подключения к БД [[SQLite]] (test.db).< | ||
+ | try { | ||
+ | $dbconn = new PDO(" | ||
+ | } catch (PDOException $e) { | ||
+ | print " | ||
+ | } | ||
+ | |||
+ | |||
+ | $dbconn= NULL; // закрыть соединение | ||
+ | </ | ||
+ | ===== Дополнительные ссылки PDO ===== | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// |
📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.
📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Nginx простые примеры конфигурации
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах
7 Самых Популярных Обзоров
- Хостинг для Python-скриптов и приложений
- ТОП 4 лучших антидетект браузеров (Бесплатные & Платные)
- Подборка купонов (промокоды) на хостинг, антидетект браузеры
- Обзор THE.Hosting (PQ Hosting): надежный хостинг с профессиональной поддержкой
- Хостинг в России
- Хостинг в Европе
- Обзор браузера Dolphin {anty} для мультиаккаунтинга