Відредагована відповідь.
Маючи певний досвід роботи з обома цими API, я б сказав, що є 2 функції блокуючих рівнів, що робить mysqli непридатним для підготовлених власних операторів.
Про них уже згадувалося у 2 чудових (поки що недооцінених) відповідях:
- Прив’язування значень до довільної кількості заповнювачів
- Повернення даних як просто масив
(обидва також згадуються у цій відповіді )
Чомусь mysqli провалився з обома.
Сьогодні він отримав деяке вдосконалення для другого ( get_result ), але він працює лише на установках mysqlnd, значить, ви не можете розраховувати на цю функцію у своїх сценаріях.
І все-таки він не має прив'язки до вартості навіть донині.
Отже, є лише один вибір: PDO
Всі інші причини, такі як
- названі заповнювачі (цей синтаксичний цукор значно завищений)
- підтримка різних баз даних (ніхто насправді ніколи не використовував її)
- зайти в об’єкт (просто марний синтаксичний цукор)
- різниця швидкостей (немає)
не мають важливого значення.
У той же час в обох цих API відсутні деякі реально важливі функції , наприклад
- ідентифікатор заповнення місця
- заповнювач місця для складних типів даних, щоб зробити динамічне прив'язування менш обтяжливим
- коротший код програми.
Отже, для задоволення потреб у реальному житті потрібно створити власну бібліотеку абстракцій на основі одного з цих API, реалізуючи вручну проаналізовані заповнювачі. У цьому випадку я віддаю перевагу mysqli, оскільки вона має менший рівень абстракції.