Что лучше, MySQL или MySQLi? И почему? Какой я должен использовать?
Я имею в виду лучше не только с точки зрения производительности, но и любой другой соответствующей функции.
Что лучше, MySQL или MySQLi? И почему? Какой я должен использовать?
Я имею в виду лучше не только с точки зрения производительности, но и любой другой соответствующей функции.
Ответы:
Если вы посмотрите на Обзор улучшенных расширений MySQL , он должен рассказать вам все, что вам нужно знать о различиях между ними.
Основные полезные функции:
mysql_*()
сейчас устарела и будет удалена в ближайшее время. Вы не должны использовать его для нового кода.
На странице руководства, посвященной выбору между MySQL, MySQL и PDO,
Команда 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) в
и очень тщательная статья в блоге
Я отказался от использования MySQL. Это просто слишком нестабильно. У меня были запросы, которые приводили к краху PHP с использованием mysqli, но прекрасно работали с пакетом mysql. Также mysqli падает на столбцах LONGTEXT . Эта ошибка была поднята в различных формах по крайней мере с 2005 года и остается сломанной . Честно говоря, я хотел бы использовать подготовленные утверждения, но mysqli просто недостаточно надежен (и, похоже, никто не пытается его исправить). Если вы действительно хотите, чтобы подготовленные заявления шли с PDO.
Что лучше, это PDO; это менее гибкий интерфейс, а также предоставляет те же функции, что и MySQLi.
Использование подготовленных операторов хорошо, потому что это исключает возможности внедрения SQL; использование подготовленных операторов на стороне сервера плохо, потому что это увеличивает количество обращений.
для меня готовые заявления - обязательная особенность. точнее, привязка параметров (которая работает только для подготовленных операторов). это единственный действительно разумный способ вставлять строки в команды SQL. Я действительно не доверяю «экранирующим» функциям. соединение с БД - это двоичный протокол, зачем использовать ограниченный ASCII-протокол для параметров?