Pdo проти mysqli

Обидва варіанти надають дуже прості інструменти для з'єднання з базою даних:

І PDO і MySQLi пропонують об'єктно-орієнтоване API. Але MySQLi також має процедурну частину API, яка для новачків може здатися простіше для освоєння. Якщо ви знайомі з власним драйвером PHP MySQL, то мігрування на процедурну частину MySQLi буде для вас простіше. Але досягнувши вершин майстерності у використанні PDO, його можна буде використовувати з будь-якою базою даних без будь-яких змін основного коду

Підтримка баз даних

Pdo проти mysqli

Ключовою перевагою PDO перед MySQLi є його могутня підтримка різних баз даних. На момент написання уроку PDO може використовувати 12 драйверів. А MySQLi - підтримує тільки MySQL.

Щоб роздрукувати список підтримуваних драйверів PDO можна використовувати наступний код:

Що означає різниця в кількості підтримуваних баз даних? Для ситуацій, коли в проекті треба перейти на використання іншої бази даних, PDO дозволить зробити процес прозорим. Все, що потрібно буде зробити - змінити рядок з'єднання і кілька запитів, якщо будь-які методи не підтримуються новою базою даних. У випадку з MySQLi доведеться переписувати весь код, включаючи запити.

іменовані параметри

Іншою важливою відмітною особливістю PDO є іменовані параметри, які роблять процедуру прив'язування істотно простіше:

Порівняйте з MySQLi:

Знак питання може здатися коротше, ніж символьні імена. Однак, втрачається гнучкість і стійкість до помилок, так як розробнику потрібно пам'ятати про порядок проходження параметрів, що в більшості випадків являє собою зону з дуже високою ймовірністю важко було розпізнати помилок.

На жаль, MySQLi не підтримує іменовані параметри.

об'єктне відображення

І PDO і MySQLi можуть відображати результати як об'єкти. Дана особливість може бути корисна в тому випадку, якщо ви не хочете використовувати рівень абстракцій бази даних і бажаєте реалізувати модель об'єктно-реляційного відображення. Припустимо, у нас є клас User з деякими властивостями, які відповідають іменам полів в базі даних:

Без об'єктного відображення потрібно буде заповнювати значеннями кожне поле (або вручну, або за допомогою конструктора) перш, ніж можна буде використовувати метод info () коректно.

Але об'єктне відображення дозволяє визначати властивості навіть до того, як об'єкт буде побудований. наприклад:

Безпека

Обидві бібліотеки надають кошти для захисту від SQL ін'єкцій, які розробники можуть використовувати на свій розсуд.

Припустимо, лиходій намагається вбудувати шкідливий запит SQL через параметр 'username' HTTP запиту (GET):

Якщо пропустити такий вислів, то воно буде включено в запит в тому вигляді, як є - запит видаляє всі рядки з таблиці users (і PDO і MySQLi підтримують множинні запити).

Метод PDO :: quote () не тільки відкидає зайві символи в рядку, а й укладає її в лапки. А функція mysqli_real_escape_string () тільки відкидає зайві символи в рядку, а в лапки її треба буде поміщати вручну.

Інший метод захисту:

Краще використовувати підготовлені вираження, ніж метод PDO :: quote () і функцію mysqli_real_escape_string ().

продуктивність

І PDO і MySQLi досить швидко виконуються. MySQLi має невелику перевагу за результатами тестів -

2.5% для звичайних запитів і

6.5% для підготовлених виразів. Так що варто прийняти інформацію до уваги, якщо для вас буде важливо навіть мінімальне розходження в характеристиках.

висновок

PDO здобув порівняно легку перемогу в даному поєдинку. З 12 різними драйверами для баз даних (доступні 18 різних баз даних!) І іменованими параметрами можна ігнорувати невелике відставання в продуктивності. З точки зору безпеки обидві бібліотеки надають розробникові рівні можливості і стійкість коду залежить тільки від програміста.

5 останніх уроків рубрики "PHP"

Коли мова йде про безпеку веб-сайту, то фраза "фільтруйте все, екрануйте все" завжди буде актуальна. Сьогодні поговоримо про фільтрації даних.

  • Expressive 2 підтримує можливість підключення інших ZF компонент за спеціальною схемою. Не всім подобається це рішення. У цій статті ми розповімо як поліпшили процес підключення декількох модулів.

  • Припустимо, що вам необхідно відправити якусь інформацію в Google Analytics з серверного скрипта. Як це зробити. Відповідь в цій замітці.

  • Підбірка з декількох видів PHP пісочниць. На деяких ви в режимі online зможете потестить свій код, але є так само рішення, які можна впровадити на свій сайт.

    Pdo проти mysqli

    За рахунок отримання інформації відразу по двох каналах (зір і слух) ефективність навчання значно перевершує навчання по книгах. А домашні завдання і онлайн-тести дозволять вам постійно думати на мові, що вивчається і відразу перевіряти свої знання!

    Pdo проти mysqli

    Pdo проти mysqli

    Якщо ви давно хочете як слід вивчити HTML, то у мене для Вас є чудова новина!

    Pdo проти mysqli

    Якщо ви вже вивчили HTML і хочете рухатися далі, то наступним кроком буде вивчення технології CSS.

    Pdo проти mysqli

    Якщо ви хочете розібратися з поняттями домену і хостингу, навчитися створювати бази даних, закачувати файли сайту на сервер по FTP, створювати піддомени, налаштовувати поштові скриньки для свого сайту і стежити за його відвідуваністю, то цей курс створений спеціально для вас!

    Схожі статті