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') ) { .... } ?> |
Надеюсь данный пост(краткая инструкция) не раз послужит палочкой-выручалочкой, для вебмастеров и программистов, кто только начал использовать сию библиотеку в своих проектах.
Похожие записи
Оставить комментарий
- Перенести ли домены с Рег.ру на Бегет? спросил (а) Виктор
- RuCaptcha bot и бан по IP спросил (а) Родмик
- MySQL запрос с несколькими JOIN спросил (а) Александр
- MySQL выбрать данные из двух таблиц спросил (а) Виталий
- Редирект при переносе сайта на WordPress спросил (а) Николай
- Подключение сайта к хранилищу на Яндекс Облаке к записи
- Подключение сайта к хранилищу на Яндекс Облаке к записи
- Подключение сайта к хранилищу на Яндекс Облаке к записи
- PHP: распознать цифры, буквы с картинки к записи
- Анализ рынка Совместных покупок к записи
- Переустановка Apache к записи
- Интеграция сайта со СДЭК по API к записи
Archive
- +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 (37)
- Декабрь 2016 (3)
- Ноябрь 2016 (3)
- Октябрь 2016 (2)
- Сентябрь 2016 (3)
- Август 2016 (7)
- Июнь 2016 (3)
- Май 2016 (3)
- Апрель 2016 (3)
- Март 2016 (1)
- Февраль 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 (42)
- Декабрь 2012 (2)
- Ноябрь 2012 (3)
- Октябрь 2012 (7)
- Сентябрь 2012 (2)
- Август 2012 (1)
- Июль 2012 (3)
- Июнь 2012 (2)
- Май 2012 (6)
- Апрель 2012 (2)
- Март 2012 (8)
- Февраль 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)
Свежие записи
- Регистрация программы для ЭВМ или базы данных в Роспатенте 27.12.2020
- Парсер для форума XenForo 22.12.2020
- Интеграция Тинькофф банк Эквайринг на сайт для приема платежей 18.12.2020
- PHP скрипт для проведения акций с призами на сайте(автоматизированный маркетинг) 16.12.2020
- Скрипт калькулятора емкости HDD для видеонаблюдения 03.12.2020

