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 не очень велик, но при большом объеме данных , с которыми придется работать, выигрыш будет заметен.

Постовой

Уже очень скоро наступит праздник всех мужчин, а вы не знаете что подарить на 23 февраля? Тогда лавка подарков Bubbles, поможет вам с выбором.

php

Понравился пост? добавь его к себе в закладки:
Хочешь быть всегда в курсе обновлений блога? подписывайся через:
  1. 23 Мар 2010 11:31 | #1

    ЭЭЭ… странно, что значит новое???

  2. 23 Мар 2010 15:50 | #2

    @none
    Новое – значит для тех кто не использует его, и то что оно действительно новое, ему не так много времени как MySQL

  3. KAN
    30 Сен 2010 3:32 | #3

    Спасибо, познаватеьно.

  4. Глазунов Иван
    12 Ноя 2010 19:24 | #4

    Подскажите Господа пожалуйста, ото запамятовал. Как сделать запрос типа «Дай все записи у который поле «lvl» будет больше 5?

  5. 12 Ноя 2010 22:11 | #5

    @Глазунов Иван

    SELECT * FROM table_name WHERE lvl>5 ORDER by id
    

    id – тут можешь указать по какому полю сортировать.