PHP PDO, Краткая инструкция.
За последние пол года работы над собственными проектами, я все чаще стал склоняться к внедрению PDO в них. для этого есть несколько весомых аргументов, во первых PHP библиотека PDO работает гораздо быстрее старой библиотеки mysqli. Во вторых предоставляет готовый интерфейс взаимодействия с БД, причем независимо от типа БД. Т.е. вы можете писать в своих скриптах запросы для mySQL, но при этом использовать базу данных SQLite, в этом случае PDO эмулирует нужные функции своими силами (для каждого типа БД требуется подключение драйвера). В третьих, с помощью этой библиотеки, используя стандартные средства, можно организовать фильтрацию запросов в базу данных, проверку запросов по маске, проверку запросов на наличие определенных типов данных, что существенно снижает вероятность инъекции.
Далее я представлю несколько примеров работы с PDO, часть из них я позаимствовал с других источников в интернете. Дабы не переписывать простые примеры работы библиотеки.
Подключение к базе БД MySQL средствами PDO
define ( SQLCHARSET, "cp1251" ); //define ( SQLCHARSET, "uft8" ); $dbhost = "localhost"; $dbname = "dbname"; $dbuser = "username"; $dbpass = "pawwsord"; $db = new PDO ( 'mysql:host=' . $dbhost . ';dbname=' . $dbname, $dbuser, $dbpass ); $db->query ( 'SET character_set_connection = ' . SQLCHARSET . ';' ); $db->query ( 'SET character_set_client = ' . SQLCHARSET . ';' ); $db->query ( 'SET character_set_results = ' . SQLCHARSET . ';' ); |
Выборка одного поля php pdo
$row = $db->query("select row from tablename WHERE 1;")->fetch(); $row=$row[row]; |
Получаем одну строку:
$row = $db->query("select row from tablename WHERE 1;")->fetch(); |
Все строки
$row = $db->query("select row from tablename WHERE 1;")->fetchAll(); |
Определение количества строк
$player_stat = $db->query("SELECT COUNT(*) FROM players WHERE name = '".$val['name']."';")->fetchColumn() |
Определяем все имена полей таблицы
$sql = "SHOW COLUMNS FROM tablename;"; $dbresult = $db->prepare ( $sql ); $dbresult->execute (); $dbfield = $dbresult->fetchAll (); $count = $dbresult->rowCount(); for ($i=0; $i<$count; $i++) { $keys[$i]="~".$dbfield[$i]['Field']; } |
Выборка нескольких полей из таблицы php pdo
$sql = "SELECT * from tablename where 1;"; $result = $db->prepare ( $sql ); $result->execute (); $tdata = $result->fetchAll (); foreach ($tdata as $row){ //любые действия например echo "<b>".$row['name']."</b>\n"; } |
Определения кода ошибки
$ercode = $db->exec("delete from tablename where id='".$id."';")->errorCode(); print_r($ercode); |
Определения действия в зависимости от кода ошибки php pdo
/* например что то удаляем */ $db->exec("delete from tablename where id='".$id."';"); /* и смотрим */ $ercode=$db->errorCode(); $ercode=$ercode[0]; $ref=$_SERVER['HTTP_REFERER'] if($ercode>0){ echo "<script language=\"javascript\">alert('Системная ошибка.'); location.href='$ref';</script>"; }else{ echo "<script language=\"javascript\">location.href='$ref';</script>"; } |
Вставить новую строку, если данные хранятся в массиве $t в формате $t[название столбца] = данные
$q = $db->prepare("INSERT INTO table (".(implode(",",array_keys($t))).") VALUES ('".(implode("','",$t))."');")->execute(); |
Изменяем строку
$db->prepare("UPDATE table SET column='data' WHERE id = '1';")->execute(); |
Определения последнего ID php pdo
$lastid = $db->lastInsertId(); |
И на последок, проверка наличия подключения модулей PHP php-pdo и php-pdo_mysq:
<?php if ( !extension_loaded('pdo') ){ .... }elseif ( !extension_loaded('pdo_mysql') ) { .... } ?> |
Надеюсь данный пост(краткая инструкция) не раз послужит палочкой-выручалочкой, для вебмастеров и программистов, кто только начал использовать сию библиотеку в своих проектах.
Похожие записи
Оставить комментарий
Full Stack
Senior, Architect
предложить оффер
- jQuery: как получить значение атрибута?
- PHP работа с изображением, класс SimpleImage
- Интеграция с API ОСАГО сайта sravni.ru
- Комментарии на PHP, Ajax, mySQL
- PHP: Категории бесконечного уровня вложенности.
- Nginx редирект на другой сервис с сохранением URL спросил (а) Сергей
- Исполнитель пропал, почему такое случается и понять с кем работать? спросил (а) Артем
- Можно ли WordPress считать универсальным движком? спросил (а) Андрей
- Что такое самописный скрипт или CMS? спросил (а) Антон
- Как при поиске в linux используя grep, добавить исключения? спросил (а) Алексей
- Консольный скрипт(JavaScript) для автоматических заказов на OZON к записи
- Консольный скрипт(JavaScript) для автоматических заказов на OZON к записи
- Как создать Telegram-бота с авторизацией через сайт к записи
- PHP скрипт: каталог закладок на сайты к записи
- Валидация на PHP к записи
- Сколько зарабатывают в бизнесе на совместных покупках к записи
- Сколько зарабатывают в бизнесе на совместных покупках к записи
Archive
- +2024 (25)
- Ноябрь 2024 (10)
- Октябрь 2024 (8)
- Сентябрь 2024 (1)
- Август 2024 (5)
- Май 2024 (1)
- +2023 (27)
- Ноябрь 2023 (1)
- Октябрь 2023 (13)
- Сентябрь 2023 (10)
- Апрель 2023 (1)
- Март 2023 (1)
- Февраль 2023 (1)
- +2022 (21)
- Декабрь 2022 (11)
- Ноябрь 2022 (1)
- Май 2022 (2)
- Апрель 2022 (2)
- Март 2022 (3)
- Февраль 2022 (1)
- Январь 2022 (1)
- +2021 (17)
- Декабрь 2021 (5)
- Ноябрь 2021 (2)
- Июль 2021 (1)
- Июнь 2021 (2)
- Май 2021 (5)
- Апрель 2021 (1)
- Март 2021 (1)
- +2020 (20)
- Декабрь 2020 (6)
- Сентябрь 2020 (2)
- Август 2020 (1)
- Июль 2020 (2)
- Май 2020 (2)
- Апрель 2020 (2)
- Март 2020 (2)
- Февраль 2020 (1)
- Январь 2020 (2)
- +2019 (18)
- Декабрь 2019 (3)
- Ноябрь 2019 (2)
- Октябрь 2019 (2)
- Сентябрь 2019 (1)
- Август 2019 (2)
- Июль 2019 (1)
- Июнь 2019 (1)
- Апрель 2019 (2)
- Март 2019 (1)
- Февраль 2019 (3)
- +2018 (44)
- Декабрь 2018 (4)
- Ноябрь 2018 (7)
- Октябрь 2018 (8)
- Сентябрь 2018 (1)
- Август 2018 (4)
- Июль 2018 (5)
- Май 2018 (3)
- Апрель 2018 (7)
- Март 2018 (1)
- Февраль 2018 (2)
- Январь 2018 (2)
- +2017 (19)
- Декабрь 2017 (2)
- Ноябрь 2017 (1)
- Октябрь 2017 (1)
- Сентябрь 2017 (2)
- Июль 2017 (1)
- Июнь 2017 (1)
- Май 2017 (2)
- Апрель 2017 (3)
- Март 2017 (2)
- Февраль 2017 (1)
- Январь 2017 (3)
- +2016 (36)
- Декабрь 2016 (3)
- Ноябрь 2016 (3)
- Октябрь 2016 (2)
- Сентябрь 2016 (3)
- Август 2016 (7)
- Июнь 2016 (3)
- Май 2016 (3)
- Апрель 2016 (3)
- Февраль 2016 (1)
- Январь 2016 (8)
- +2015 (36)
- Ноябрь 2015 (5)
- Октябрь 2015 (4)
- Сентябрь 2015 (1)
- Август 2015 (8)
- Июнь 2015 (1)
- Май 2015 (4)
- Апрель 2015 (8)
- Март 2015 (3)
- Февраль 2015 (2)
- +2014 (26)
- Ноябрь 2014 (2)
- Октябрь 2014 (5)
- Сентябрь 2014 (6)
- Июль 2014 (1)
- Июнь 2014 (2)
- Май 2014 (3)
- Апрель 2014 (6)
- Февраль 2014 (1)
- +2013 (27)
- Декабрь 2013 (2)
- Ноябрь 2013 (1)
- Октябрь 2013 (1)
- Август 2013 (1)
- Июль 2013 (3)
- Июнь 2013 (10)
- Май 2013 (1)
- Апрель 2013 (2)
- Февраль 2013 (3)
- Январь 2013 (3)
- +2012 (41)
- Декабрь 2012 (2)
- Ноябрь 2012 (3)
- Октябрь 2012 (7)
- Сентябрь 2012 (2)
- Август 2012 (1)
- Июль 2012 (3)
- Июнь 2012 (2)
- Май 2012 (6)
- Апрель 2012 (2)
- Март 2012 (7)
- Февраль 2012 (5)
- Январь 2012 (1)
- +2011 (57)
- Декабрь 2011 (6)
- Ноябрь 2011 (2)
- Октябрь 2011 (3)
- Сентябрь 2011 (5)
- Август 2011 (4)
- Июль 2011 (3)
- Июнь 2011 (3)
- Май 2011 (3)
- Апрель 2011 (4)
- Март 2011 (10)
- Февраль 2011 (5)
- Январь 2011 (9)
- +2010 (43)
- Декабрь 2010 (7)
- Ноябрь 2010 (21)
- Октябрь 2010 (14)
- Сентябрь 2010 (1)
Свежие записи
- Интеграция платежной системы MoonPay на сайт по API 10.11.2024
- Парсер товаров с Taobao 08.11.2024
- Упаковка и минификация кода JavaScript онлайн 07.11.2024
- Как эффективно анализировать логи при DDOS атаке 07.11.2024
- Бот для автоматических заказов на OZON (плагин для Chrome) 07.11.2024