6 ответов:
Если вы посмотрите на Обзор Улучшенного Расширения MySQL, он должен рассказать вам все, что вам нужно знать о различиях между ними.
основные полезные функции:
- объектно-ориентированный интерфейс
- поддержка подготовленных заявлений
- поддержка нескольких заявлений
- сопровождение сделок
- расширенные возможности отладки
- встроенный сервер поддержка.
существует ручная страница, посвященная помощи в выборе между mysql, mysqli и PDO в
- http://php.net/manual/en/mysqlinfo.api.choosing.php и
- http://www.php.net/manual/en/mysqlinfo.library.choosing.php
команда PHP рекомендует mysqli или PDO_MySQL для новой разработки:
рекомендуется использовать расширения mysqli или PDO_MySQL. Не рекомендуется используйте старое расширение mysql для новой разработки. Подробная матрица сравнения характеристик приведена ниже. Общая производительность всех трех расширений считается примерно одинаковой. Хотя производительность расширения вносит только часть от общего времени выполнения веб-запроса PHP. Часто воздействие как низко как 0.1%.
на странице также есть матрица функций, сравнивающая API расширения. Основные различия между mysqli и mysql API заключаются в следующем следует:
mysqli mysql Development Status Active Maintenance only Lifecycle Active Long Term Deprecation Announced* Recommended Yes No OOP API Yes No Asynchronous Queries Yes No Server-Side Prep. Statements Yes No Stored Procedures Yes No Multiple Statements Yes No Transactions Yes No MySQL 5.1+ functionality Yes No* http://news.php.net/php.internals/53799
существует дополнительная матрица функций, сравнивающая библиотеки (новый mysqlnd против libmysql) в
и очень тщательная статья в блоге на
Я отказался от использования mysqli. Он просто слишком нестабилен. У меня были запросы, которые разбивают PHP с помощью mysqli, но отлично работают с пакетом mysql. Также mysqli падает на столбцы LONGTEXT. Эта ошибка была поднята в различных формах, по крайней мере, с 2005 года и остается сломанным. Я бы честно хотел использовать подготовленные заявления, но mysqli просто недостаточно надежен (и никто, похоже, не беспокоится об этом). Если вы действительно хотите подготовленные заявления идут с ПДО.
MySQLi расшифровывается как MySQL improved. Это объектно-ориентированный интерфейс к привязкам MySQL,который упрощает использование. Он также предлагает поддержку подготовленных заявлений (которые очень полезно). Если вы находитесь на PHP 5, Используйте MySQLi.
Что лучше PDO; это менее жестокий интерфейс, а также предоставляет те же функции, что и MySQLi.
использование подготовленных операторов хорошо, потому что это исключает возможности SQL-инъекции; использование подготовленных операторов на стороне сервера плохо, потому что это увеличивает количество обходов.
для меня подготовленные заявления-это обязательная функция. точнее, привязка параметров (которая работает только с подготовленными операторами). это единственный действительно разумный способ вставить строки в команды SQL. я действительно не доверяю функциям "побега". соединение с БД является двоичным протоколом, зачем использовать ASCII-ограниченный субпротокол для параметров?
Comments