Основы работы с PDO

Задание:  

         PDO - всего лишь оболочка, технология, предназначенная для взаимодействия серверной части сайта с базой данных. Сегодняшнее задание - подключиться к базе данных и выполнить несколько запросов, используя эту технологию

 

 

Подробная инструкция:

 

  • Сперва нам необходимо настроить подключение к базе. Для подключения нам понадобится несколько переменных:

$driver = 'mysql'; // тип базы данных, с которой мы будем работать 

$host = 'localhost';// альтернатива '127.0.0.1' - адрес хоста, в нашем случае локального

$db_name = 'blog'; // имя базы данных 

$db_user = 'root'; // имя пользователя для базы данных 

$db_password = ''; // пароль пользователя 

$charset = 'utf8'; // кодировка по умолчанию 

$options = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]; // массив с дополнительными настройками подключения. В данном примере мы установили отображение ошибок, связанных с базой данных, в виде исключений 

Далее из нескольких переменных формируем строку DSN соединения и сохраняем в отдельную переменную (можно этого и не делать, но так удобнее и читабельнее): 

$dsn = "$driver:host=$host;dbname=$db_name;charset=$charset";

 

И в конечном итоге создаём объект PDO, передавая ему следующие переменные: 

$pdo = new PDO($dsn, $db_user, $db_password, $options); 

 

Конечно же, всё это можно написать в одну строку, не используя дополнительных переменных, но мы считаем, что такой способ намного нагляднее.

 

  • Далее нам нужно сформировать SQL-запрос. Пусть это будет, к примеру, SELECT:

$sql = "SELECT * FROM table_name where id = :id";

 

  • Так как в запросе есть переменная, его нужно сперва подготовить, пропустив через метод PDO prepare():

$statement = $pdo->prepare($sql);

 

  • получившееся выражение выполняем методом execute(), передавая в него массив с переменными, которые используются в запросе:

$statement->execute($data);

 

  • Если выполнялся запрос на получение данных из базы, как в нашем случае, то следующим шагом можно их извлечь. Два самых наиболее часто используемых методов - это fetch() и fetchAll(), о разнице между ними почитайте самостоятельно, это полезная информация. 
  • этим методам можно так же передавать константы. Их существует несколько, самые распространённые - FETCH_ASSOC и FETCH_OBJ. Первая извлекает информацию из таблицы в виде ассоциативного массива, где ключи соответствуют названиям колонок в базе, а вторая - в виде объекта.

$result = $statement->fetchAll(PDO::FETCH_ASSOC);

 

  • После этого массив, полученный в переменной $result, можно использовать в работе.

 

ПОЯСНЕНИЯ И ПОЛЕЗНАЯ ИНФОРМАЦИЯ

 

  • Для работы с MySQL в php существует так же чуть более старая технология mysqli, однако у её использования есть несколько минусов, из-за которых многие разработчики отдают своё предпочтение PDO. Самое очевидное - mysqli работает только с MySQL, а PDO поддерживает больше десятка других баз данных. Кроме этого, PDO поддерживает подготовленные запросы (что немаловажно), да и в целом удобнее в работе. 

 

  • В PDO так же есть более быстрый и простой способ выполнения запроса - через метод query(), в который просто передаётся SQL-запрос. Однако использовать его стоит только тогда, когда в вашем SQL нет сторонних переменных, поскольку этот метод никак не защищён. 

 

  • Мы не зря заговорили про безопасность, так как это очень значимый момент. PDO позволяет использовать подготовленные запросы с двумя типами меток, мы в нашем примере использовали именованные. Эти метки, заменяющие переменные в запросе, как раз и защищают нас от возможных sql-инъекций, именно поэтому рекомендуется использование метода prepare() вместо query()

 

  • В массиве с настройками подключения $options можно задать не только обработку исключений, но так же и другие параметры. Например, мы можем установить метод извлечения данных по умолчанию, например: [PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC]

 

  • Конечно, в один небольшой урок невозможно уместить всех аспектов и нюансов, поэтому для более глубокого понимания этой технологии стоит ознакомиться с открытыми онлайн-руководствами. В целом, не так страшен PDO, как его рисуют, ведь главное - не заучить все методы и константы наизусть, а понять основной принцип. Поэтому наша с вами задача сейчас состоит в том, чтобы приспособиться и привыкнуть к применению PDO в повседневной разработке. 
Расскажите всем
Поделиться
Отправить