Введение в работу с 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
В чем разница между MySQL и MySQLi
? MySQL и MySQLi — это две технологии, которые полезны, если вы разрабатываете интерактивную веб-страницу с помощью препроцессора гипертекста или языка сценариев PHP. Как следует из их названий, MySQL и MySQLi используют язык структурированных запросов или SQL, который представляет собой стандартизированную систему для извлечения информации из баз данных. Однако, несмотря на это сходство, эти две технологии имеют свои различия, поскольку MySQL является более старой и базовой технологией PHP, а MySQLi является более новой и предлагает более продвинутые функции. контекст
MySQL AB, дочерняя компания корпорации Oracle, впервые выпустила технологию MySQL в 1995 году. По состоянию на 2011 год разработчики обычно используют ее только при работе с PHP версии 4.1.3 или более поздней. Хотя MySQL может работать с более новыми версиями PHP, он не может использовать новые функции, связанные с более новыми версиями PHP.
MySQL AB отредактировала MySQLi, также известную под названием «улучшенный MySQL», в 2004 году. MySQLi совместим с версиями PHP 4.1.3 и более поздними, что позволяет ему использовать часть новых возможностей PHP.
СУРБД против драйвера
MySQL — это надежная система управления базами данных, или РСУБД, что означает, что она может хранить данные в связанных таблицах и передавать простые базы данных в несколько разных таблиц. Этот метод не требует графических инструментов пользовательского интерфейса или графического интерфейса для управления базами данных или данными в них. Напротив, MySQLi — это не автономная СУБД, а драйвер СУБД. Это означает, что MySQLi расширяет функциональные возможности и контролирует операции. Из MySQL, но требует MySQL в качестве базовой или хост-системы.
разбирательство против
Объектно-ориентированный
Хотя MySQL предоставляет пользователям только процедурный программный интерфейс или API, MySQLi предоставляет пользователям как процедурный API, так и объектно-ориентированный API. API определяет переменные, функции, классы и методы, необходимые приложениям для выполнения задач. В то время как процедурный API требует, чтобы пользователь вызывал функции для выполнения задач, с объектно-ориентированным API пользователь создает — или инстанцирует — класс, а затем вызывает результирующие объектно-ориентированные методы. Как отмечается на официальном веб-сайте PHP, большинство разработчиков предпочитают объектно-ориентированные API, поскольку они более оптимизированы и позволяют лучше организовать код.
Улучшения
Благодаря своему противоположному API, MySQLi включает в себя расширенные функции, которых нет в MySQL. Например, MySQLi может поддерживать запросы, подготовленные на стороне клиента и сервера, включая множественные объявления. Инструкции — это инструкции, написанные на компьютерных языках высокого уровня, таких как Pascal, C и Fortran. Использование этих языков позволяет создавать более динамичные веб-сайты. В отличие от MySQL, MySQLi также поддерживает наборы символов, то есть систему кодирования символов, и обработку транзакций, что позволяет компьютеру немедленно реагировать на запросы пользователя.
Связанные записи:
- Как запустить Xcode на Mac OS
- Как посчитать элементы списка в Java
- Как отсортировать словарь Python по ключам или значениям
- Округление чисел JavaScript
Что лучше: 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 вариант, предпочтительнее. Выслушаю различные мнения. Спасибо!
- Вопрос задан более трёх лет назад
- 15898 просмотров
MySQL & MySQLi разница?
Гость
MySQLi — это всего лишь драйвер (модуль) для языка PHP с помощью которого предоставляется доступ к серверу MySQL.
MySQL — сервер БД.
Гость
MySQLi от стандартного MySQL отличается работой кеша, это более новый вариант драйвера созданный специально под php 5, для самой базы данных все равно через какой из них работать
Гость
лучший ответ MySQLi поддерживает отправку множества запросов за раз (записанных единой строкой) — mysqli_multi_query используется для этого. В обычном расширении MySQL этого нет — только отпарвка отдельно взятого запроса через mysql_query
MySQLi поддерживает подготовленные выражения. Это означает, что можно отправить запрос серверу один раз, но без данных. Сервер разберет его, проанализирует, оптимизирует и подготовит план выполнения. Дальше вы шлете только данные, которые нужно использовать при выполнении запроса. Полезно, когда нужно выполнить множество однотипных запросов — нет нужды каждый раз выполнять синтаксический анализ и разбор выражения — делается все один раз, а потом идет непосредственно выполнение с разными данными (например, вставка множества строк в одну таблицу).
Расширение MySQL изначально этого не поддерживает, хотя и можно выкрутиться, вручную генерируя запросы к СУБД, сообщающие о необходимости подготовить выражение, с последующей отправкой запросов для простановки данных в переменные и требованием выполнить подготовленное ранее выражение.
Есть и еще ряд плюшек.
MySQLi поддерживает асинхронность в некоторой степени, хотя сделано это так себе. То есть Вы не можете назначить обработчик на событие «результат вернулся», а получаете результат все в том же контексте, что отправляли запрос (поэтому если результат еще не вернулся, все равно будет некоторый период ожидания).
С другой стороны расширение MySQL несколько быстрее MySQLi, поскольку просто предоставляет доступ к клиентской библиотеке libmysqlclient, в то время как MySQLi является дополнительной оберткой над ней, производящей дополнительные операции над данными, которые вы передаете в функции.
Однако, если вам нужны подготовленные выражения или возможность отправлять множество запросов, то MySQLi будет быстрее, чем собственная обертка над MySQL, написанная на PHP для поддержки этих возможностей.
Гость
Стоит заметить, что обе библиотеки теперь используют один и тот же драйвер — mysqlnd. MySQL предоставляет к нему почти прямой доступ, в то время как MySQLi является библиотекой-оберткой с дополнительной обработкой (то есть Просто использует mysqlnd где-то внутри).
- Ajax работает на mysql или только на mysqli? Ajax работает на mysql или только на mysqli?
- Mysql помогите! Как с помощю php (новой) новой это mysqli как подключится к mysqli?
- В чём разница между C, C#, C++ и в чём разница между базами данных SQL и MySQL
- MySQL. Что лучше использовать для работы (в плане безопасности, скорости)? Mysql, mysqli или PDO
- В чем разница — mysql клиент и mysql сервер
Новые вопросы
- Как упорядочивать номера записей в базе данных mysql?
- Код на PHP + mySQL механизм взаимодействия
- MySQL Error Not connection задолбала
- КАК СОЗДАТЬ СТОЛБЕЦ В MYSQL SAMP
- PHP MySQL выдернуть записи и тут же их удалить вернув результат