Перейти к содержимому

Mysqli и mysql в чем разница

  • автор:

Введение в работу с MySQL в PHP

Как правило, в качестве хранилища данных используются базы данных. PHP позволяет использовать различные системы управления базами данных, но наиболее популярной на сегодняшний день в связке с PHP является СУБД MySQL.

MySQL бесплатную систему управления базами данных, которая разрабатывается компанией Oracle и которая позволяет взаимодействовать с базой данных с помощью команд языка SQL. MySQL относительно легко устанавливать и настраивать. Более того эта СУБД может работать на всех популярных ОС — на Windows, MacOS, Linux. MySQL вполне подходит как для маленьких, так и для больших проектов.

Сам процесс установки и конфигурации MySQL можно посмотреть в соответствующем руководстве — Руководство по MySQL. В данном случае мы будем рассматривать только взаимодействие PHP с MySQL.

Формально есть два способа для подключения к MySQL из PHP:

  • Библиотека MySQLi (Improved MySQL)
  • Библиотека PDO (PHP Data Objects)

Преимуществом pdo является то, что оно позволяет работать не только с mysql, но и с еще рядом систем баз данных — Firebird, PostreSQL, SQLite, Oracle, MS SQL Server и т.д. С помощью PDO можно использовать общий подход для подключения к поддерживаемым системам баз данных, где часто достаточно изменить строку подключения, что естественно добавляет гибкости. Также особенностью PDO является то, что эта библиотека представляет объектно-ориентированный подход для работы с базами данных.

Расширение MySQLi ограничено только одной СУБД — MySQL. MySQLi предоставляет два способа взаимодействия с базами данных: объектно-ориентированный и процедурный. К преимуществам MySQLi нередко относят то, что она больше ориентирована на специфику MySQL, специфичные для этой СУБД возможности и быстрее применяет новвоведения, которая появляются с новыми выпусками MySQL. Кроме того, также в качестве преимущества MySQLi нередко заявляют о большей производительности и скорости по сравнению с PDO.

Как бы то ни было, в настоящее время распространены оба подхода. Поэтому далее мы рассмотрим, как работать с MySQL как через PDO, так и через MySQLi.

Обе библиотеки — и mysqli и pdo_mysql по умолчанию включены в базовый комплект PHP. И нам только надо немного изменить файл конфигурации php.ini , чтобы начать работу с этими библиотеками.

Подключение mysqli

Чтобы использовать библиотеку mysqli для работы с MySQL, нам надо указать соответствующее расширение в файле php.ini . По умолчанию оно уже имеется в файле, только оно закомментировано. Так, найдем в файле php.ini следующую строку:

;extension=mysqli

Раскомментируем ее, убрав знак точки с запятой:

extension=mysqli

Подключение pdo_mysql

Чтобы использовать библиотеку pdo_mysql найдеем в файле php.ini следующую строку:

;extension=pdo_mysql

Раскомментируем ее, убрав точку с запятой:

extension=pdo_mysql

Теперь мы можем использовать оба расширения для работы с базой данных MySQL.

Что лучше: mysql или mysqli или pdo (а также mysqli_real_escape_string или mysqli_prepare)?

Использоваться будет MySQL и вряд ли когда-либо будет переход на другую базу данных.

mysql — устарел и не поддерживается;
mysqli — как я понял, рекомендуется разработчиками php;
pdo — по различным данным, немного медленнее mysqli, но есть свои плюсы, именованные плейсхолдеры, смена типа БД и др.

Я остановился на mysqli, но тут другой вопрос, что лучше использовать, по старинке mysqli_query+mysqli_real_escape_string или mysqli_prepare+mysqli_stmt_bind_param+mysqli_stmt_execute и т.д.

С точки зрения безопасности, конечно второй вариант лучше, но и первый, если быть внимательным, тоже не уступает в безопасности, зато, как я понял, экономится один запрос в базу данных (PREPARE).

Я делал тесты производительности с повтором одних и тех же запросов 50 раз, в запросе с limit 20 получаются результаты ~0.026 и ~0.032 соответственно, выиграл 1 вариант.

А с limit 200 получилось ~0.110 и ~0.100 соответственно, выиграл 2 вариант.

Запросов с малым количеством строк для вывода будет меньше, то есть получается 1 вариант, предпочтительнее. Выслушаю различные мнения. Спасибо!

  • Вопрос задан более трёх лет назад
  • 15916 просмотров

Почему MySQLi лучше MySQL?

PHP и MySQL разработчики сталкиваются с тремя PHP и API-интерфейсами для MySQL. Это может сбить с толку начинающего программиста. С середины 2012 года разработчики PHP предлагают не использовать старое PHP MySQL расширение, чтобы исправить ситуацию. Всем, активно занимающимся разработкой программного обеспечения и сайтов, просто жизненно необходимо заменить обычный MySQL на MySQLi или PDO_MySQL. Почему же MySqli лучше MySQL? Именно об этом и поговорим ниже в данной статье.

История и особенности

PHP и MySQL идут рука об руку. Оригинальный MySQL API разрабатываются примерно с PHP 2.0. Многие веб-сайты до сих пор могут служить примерами работы оригинального MySQL API. Это удивительно, учитывая сравнение функциональности трех API, PHP MySQL.

Сравнительная характеристика по API
ext/mysqli PDO_MySQL ext/mysql
PHP версия введена 5.0 5.1 2.0
Год ввода 2003 2005 Прошлый век
В комплекте с PHP 5.х Да Да Да
Состояние разdития Активно Активно Только поддержка
Добавление функций Все новое,
флагманское
Все новое,
учитывая, что подходит для PDO
Ничего нового с 2006
Жизненный цикл Активно Активно Объявлено продолжительное устаревание
Рекомендация для новых проектов Да Да Нет
ООП интерфейс Да Да Нет
Процедурный интерфейс Да Нет Да
API поддерживает неблокирующие, асинхронные запросы с mysqlnd Да Нет Нет
Постоянные соединения Да Да Да
API поддерживает кодировки Да Да Да
API поддерживает подготавливаемые запросы на стороне сервера Да Да Нет
API поддерживает подготавливаемые запросы на стороне клиента Нет Да Нет
API поддерживает хранимые процедуры Да Да Нет
API поддерживает несколько инструкций Да Большинство Нет
AAPI поддерживает транзакции Да Да Нет
Транзакциями можно управлять с помощью SQL Да Да Да
API поддерживает протокол SSL Да Да Нет
API поддерживает сжатие Да Да Да
Поддерживает всю функциональность MySQL 5.1 Да Большинство Нет

Программные особенности

Список программных особенностей.

ext/mysqli PDO_MySQL ext/mysql
Производительность тенденция выше среднего средняя ниже среднего
Фактор безопасности хорошо хорошо ниже среднего
Возможность пропустить ошибку низкая средняя выше среднего

Вопросы производительности

Все три PHP API для MySQL-это крошечные обертки над C вокруг базовой библиотеки C клиент-сервер. Это библиотека, лежащая в основе клиент-сервер C, который делает большую часть работы. При одной и той же команде, выполненной с использованием одной и той же функции можно ожидать, что все интерфейсы API, покажут одинаковую производительность. Различные же функции имеют разные характеристики.

Безопасность: Шифрование/SSL

MySQL поддерживает безопасные соединения между клиентами и клиентами MySQL и сервером с использованием протокола Secure Sockets Layer (SSL). И MySQLi и Pdo_Mysql имеют функцию соединения с SSL. Таким образом, пользователи PHP MySQL может использовать SSL для своего бизнеса.

Но, MySQL не позволит вам установить параметры конфигурации, необходимые для SSL шифрованного подключению. Например. попробуйте такой анализатор сетевых протоколов как Wireshark и посмотрите на любое подключение к обычной MySQL — вы сможете извлечь оттуда любую информацию.

Безопасность: инъекции SQL

Конечно, можно разработать пуленепробиваемый веб-приложение поверх MySQL, но это требует навыков и всегда есть возможность ошибки. Подробнее о защите от SQ-инъекций смотрите в этом материале.

Этот обзор является неполным, но может вам дать хотя бы первоначальное представление о разнице между MySQL, MySQLi и PDO_MySQL. В любом случае лично я рекомендую использовать современные инструменты для разработки веб сайтов.

Автор этого материала — я — Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML — то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

статьи IT, MySQLi, php, разработка сайтов, MySQL

Mysqli и mysql в чем разница

Профиль
Группа: Участник
Сообщений: 165
Регистрация: 6.12.2007

Репутация: нет
Всего: 33

прошу разъяснить, существует какая-то разница между mysql && mysqli.
Я так понял разница состоит в том, что это просто альтернативный способ подключения к бд, там есть некие Extensions, если вы определенным образом настроили MySQL бд, то сможете подключаться при помощи mysql or mysqli, или можно при помощи: И mysql И mysqli.
Я сижу на Денвере, и оба способа подключения работают (возможно разработчики пакета Денвер, настроили так, чтобы mysql && mysqli сразу работали или уже по умолчанию, в бд MySQL включены эти 2-а способа подключения?)

Вопросы:
1). Правильно я понял, то что описал выше? Что это определенные настройки бд.
2). Есть ли все-таки какая-то функциональная разница между mysql && mysqli или нет? (просто я тогда смысла не пойму, если не только разработчики MySQL просто предоставили просто подключаться к бд двумя способами, которые функционально между собой не различаются?)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *