Зачем вам этот PDO?

PHP Data Object ~ [ wwweb.uz ]

Да, возможно, вы привыкли работать с MySQL. А что, если понадобится перейти на Oracle или PostgreSQL?

Все начинающие разработчики и любители кодить на пыхе (то бишь php 🙂 ) знакомы с MySQL и MySQLi.
При процедурном стиле программирования используются конструкции и функции для работы с базой данных MySQL, с необходимым набором готовых решений.
К моменту, когда я столкнулся с переходом от процедурного к объектно-ориентированному подходу программирования, мне стало ясно, что PDO — это довольно удачное решение.

Во-первых, это безопасность.
Во-вторых, это требование времени.
В-третьих, это удобство читаемости кода.

Расставьте эти моменты согласно вашим приоритетам, не суть, они в любом порядке будут иметь место быть.

PDO = PHP Data Objects. Это класс, позволяющий работать с базами данных через объекты.
При чем PDO дружит не только с MySQL, но и прочими базами данных, а.и. Oracle, PostgreSQL, ODBC, SQLite и пр.

Основными этапами при работе с PDO являются:

1. Подключение к базе данных;
2. Подготовка запроса к базе данных;
3. Ну и собственно выполнение запроса.

Сравнение работы с MySQLi и PDO.
(переходим от MySQLi к PDO)

Подключение

// MySQLi
$host = '127.0.0.1';
$db = 'dbname';
$user = 'username';
$pass = '';

$link = mysqli_connect($host, $user, $pass, $db);

// PDO
$host = '127.0.0.1';
$db = 'dbname';
$user = 'username';
$pass = '';
$charset = 'utf8';

$dsn = "mysql:host=$host; dbname=$db; charset=$charset";

$opt = [
  PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
  PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_LAZY,
  PDO::ATTR_EMULATE_PREPARES => false,
];

$pdo = new PDO($dsn, $user, $pass, $opt);

Запрос

// MySQLi
$sql = "SELECT * FROM table";
$stm = mysqli_query($link, $sql);
$row = mysqli_fetch_assoc($stm);

// PDO
$sql = "SELECT * FROM table";
$stm = $pdo->query($sql);
$row = $stm->fetch();

Выборка

// MySQLi
while($row = mysqli_fetch_assoc($stm))
{
  echo $row['item'];
}

// PDO
while($row = $stm->fetch())
{
  echo $row->item;
}

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

// PDO, подготовленное выражение
$sql = "SELECT * FROM table WHERE `id` = ?";
$stm = $pdo->prepare($sql);
$stm->execute([$id]);

Ну а для тех, кто даже закрытие подключения к базе контролирует пример будет следующий:

// MySQLi
mysqli_close($link);

// PDO
$pdo = null;

Как и обещал, вкратце и наглядно изложил основные моменты при переходе на PDO. Надеюсь данная статья была вам полезна.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *