. MySQLi – новая версия расширения MySQL | Makarou.com - когда сайты превращаются в бизнес

MySQLi – новая версия расширения MySQL

MySQLi – новая версия расширения MySQL

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

Лично я в своих разработках, всегда использую MySQLi, так как  он работает немного быстрее и безопаснее по сравнению с MySQL. Расширение MySQLi  совместимо только с версиями MySQL 4.1 и выше. Для более старых версий MySQL , по-прежнему придется использовать старое расширение.

И так, в чем же отличие нового расширение от старого. :)

На первый взгляд расширение MySQLi очень похоже на старую версию расширения. Большинство функций, которые доступны в старом расширении, также доступны  и в новом расширении. Первое отличие от MySQL это то, что немного изменились названия функций. Например, вместо функции mysql_query() старого расширения, в новом расширении используется функция mysqli_query(). Если говорить по-простому, то в названиях функций вместо слова mysql используется слово mysqli.

Так же в новом расширении исчезло такое понятие как “соединение по умолчанию”. То есть, в старом расширении, в запросах не нужно было явно указывать соединение с базой данных, но в новом расширении, теперь нужно в каждом запросе указывать идентификатор соединения с базой данных, который передается первым параметром.

Вот отличия MySQLi от MySQL.

1. Поддержка двойного синтаксиса: функциональный и объектно-ориентированный.

2. Поддержка подготовленных операторов.

3. Поддержка транзакций.

4. Поддержка множественных запросов.

5. Расширенная поддержка отладки.

6. Встроенная серверная поддержка.

Для начала я вам покажу, как подключаться к базе данных по-новому. :)

Синтаксис функции подключения к базе выглядит следующим образом:


mysqli_connect($hostname,$username,$password,$database,$port,$socket);

параметры $port и $socket, являются необязательными.

Пример процедурного стиля:


$load= mysqli_connect("localhost","username","password","database", 3306);

Пример объектно-ориентированного стиля:


$load= new mysqli("localhost","username","password","database", 3306);

С переменными, которые передаются в функцию mysqli_connect, думаю вам все понятно.

Теперь посмотрим, как выполнять запросы и получать данные в каждом из стилей.

Пример процедурного стиля:

$load= mysqli_connect("localhost","username","password","database", 3306);
$result= mysqli_query($load, "SELECT username FROM table WHERE id='1'");
$row=mysqli_fetch_array($result);
echo $row['username'];

Как видно из примера в функцию mysqli_query передается идентификатор подключения $load. Ну а формат самого запроса остался без изменений.

Пример объектно-ориентированного стиля:

$load= new mysqli("localhost","username","password","database", 3306);
$result=$load->query("SELECT username FROM table WHERE id='1'");
$row=$result->fetch_array();
echo $row['username'];

Как видно из примера идентификатор подключения $load в самой функции не передается, а передается только в названии функции — $load->query.

Также нужно знать, что результат запроса сохраняется в памяти до тех пор, пока скрипт выполнивший этот запрос, не завершит свою работу. Это нормально в большинстве случаев, но когда вы работаете  с запросами, которые возвращают большие наборы данных, необходимо освобождать память, занимаемую результатом запроса. Для этого в MySQLi существует функция – mysqli_free_result().

Пример использования этой функции в процедурном стиле:

$load= mysqli_connect("localhost","username","password","database", 3306);
$result= mysqli_query($load, "SELECT username FROM table WHERE id='1'");
$row=mysqli_fetch_array($result);
echo $row['username'];
mysqli_free_result($result);

Пример использования этой функции в объектно-ориентированном стиле:

$load= new mysqli("localhost","username","password","database", 3306);
$result=$load->query("SELECT username FROM table WHERE id='1'");
$row=$result->fetch_array();
echo $row['username'];
$result->close();

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

Подводя итоги, хочется сказать, что стабильность у MySQLi стала выше в разы по сравнению с MySQL, так как появилась возможность использовать транзакции. Хотя транзакции были и MySQL, но работы с ними стала возможной только в MySQLi. Также работа с подготовленными операторами дала возможность обезопасить свои данные от SQL – инъекций. На счет быстродействия, я тестировал web приложения на двух расширениях, выигрыш у MySQLi не очень велик, но при большом объеме данных , с которыми придется работать, выигрыш будет заметен.

php

Понравился пост? добавь его к себе в закладки:
Хочешь быть всегда в курсе обновлений блога? подписывайся через:
фото проституток новосибирска