Яка різниця між MySQL, MySQLi та PDO? [зачинено]


128

Яка різниця між MySQL, MySQLi та PDO ?

Який із них найкраще підходить для використання з PHP-MySQL?

Відповіді:


100

Існує (понад) три популярних способи використання MySQL від PHP. Це окреслює деякі особливості / відмінності PHP: Вибір API :

  1. ( НАДАДЖЕНО ) Функції mysql є процедурними та використовують ручну епіляцію.
  2. MySQLi є заміною функцій mysql, об'єктно-орієнтованою та процедурною версіями. Він має підтримку підготовлених заяв.
  3. PDO (PHP Data Objects) - це загальний рівень абстрагування баз даних з підтримкою MySQL серед багатьох інших баз даних. Це забезпечує підготовлені заяви та значну гнучкість у поверненні даних.

Я рекомендую використовувати PDO з підготовленими заявами. Це добре розроблений API і дозволить вам легше перейти до іншої бази даних (включаючи ту, що підтримує ODBC ), якщо це необхідно.


9
Часто виникає плутанина, що для процедурних процедур вам потрібно використовувати функції mysql _ * (), де для OO ви використовуєте mysqli! Справа в тому, що mysqli повністю замінює ранню (PHP 4) реалізацію mysql. Можна використовувати як процедурний стиль, так і OO один з mysqli.
Патрік Аллаерт

@Patrick, спасибі Я це виправив.
Меттью Флашен

46

Це різні API для доступу до сервера MySQL

  • MySQL є історичним API
  • MySQLi нова версія історичного API. Він повинен краще працювати і мати кращий набір функцій. Також API є об'єктно-орієнтованим.
  • PDO_MySQL , є MySQL для PDO. PDO було введено в PHP, і проект має на меті створити загальний API для доступу до всіх баз даних, тому теоретично ви повинні мати змогу переходити між RDMS, не змінюючи жодного коду (якщо ви не використовуєте конкретну функцію RDBM у своїх запитах ), також об'єктно-орієнтовані.

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

Моя порада була б

  1. PDO
  2. MySQLi
  3. mysql

Також, на мою думку, API mysql, ймовірно, буде видалений у майбутніх випусках PHP.


3
Це вже не почуття: PHP7 видалив mysql API, залишивши PDO та mysqli
Мануель

3

mysqli - це розширена версія mysql.

Розширення PDO визначає легкий, стійкий інтерфейс для доступу до баз даних у PHP. Кожен драйвер бази даних, який реалізує інтерфейс PDO, може виставляти особливості бази даних як звичайні функції розширення.


4
копіювання з файлу вручну не дуже корисно.
XuDing

3

Зокрема, розширення MySQLi надає наступні надзвичайно корисні переваги над старим розширенням MySQL.

Інтерфейс OOP (крім процедурного) Підготовлена ​​операція підтримки операції + підтримка збережених процедур Приємніші синтаксичні покращення швидкості Покращена налагодження

Розширення PDO

Розширення об'єктів даних PHP - це рівень абстракції бази даних. Зокрема, це не інтерфейс MySQL, оскільки він надає драйвери для багатьох двигунів бази даних (звичайно, включаючи MYSQL).

PDO має на меті забезпечити послідовний API, який означає, що при зміні двигуна бази даних зміни коду для відображення цього повинні бути мінімальними. Під час використання PDO ваш код, як правило, "просто" працює у багатьох двигунах бази даних, просто змінюючи драйвер, який ви використовуєте.

Окрім того, що сумісна міжбазовою базою даних, PDO також підтримує підготовлені оператори, збережені процедури тощо, використовуючи драйвер MySQL.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.