Соединение с MySQL
Прежде, чем начать работу с базой данных, необходимо создать соединение с сервером
MySQL. Этим и занимается функция
Аналогом функции mysql_connect является функция mysql_pconnect. Их отличие состоит в том, что последняя открывает постоянное соединение с MySQL, благодаря чему снижаются расходы времени и ресурсов на создание новых соединений. Это постоянное соединение не уничтожается ни функцией закрытия соединения, ни каким-либо другим образом. Использование этой функции требуется в случае, если вашему веб-приложению приходится часто обращаться к MySQL. Но учтите, что mysql_pconnect работает только на сервере, где PHP установлен как модуль.
Выбор или создание базы данных.
Вторым шагом при работе с MySQL чаще всего становится выбор базы данных для дальнейшей работы, либо создание новой базы данных.
Создание базы данных осуществляет функция mysql_create_db().
mysql_create_db(имя базы данных, [идентификатор соединения]); |
Имя базы данных может состоять из любых символов, используемых для задания имени директорий на сервере, исключая символы ’/’, ’’, ’.’.
Идентификатор соединения есть результат выполнения функции mysql_connect или mysql_pconnect.
Для дальшейшей работы с базой данных вы должны ее выбрать. Выбор базы данных осуществляется функцией mysql_select_db(). Ее синтаксис выглядит следующим образом:
mysql_select_db(имя базы данных, [идентификатор соединения]); |
Запросы в MySQL.
Пожалуй, самая универсальная функция для работы с MySQL -
В качестве одного из аргументов ей передается запрос MySQL - наподобие тех, которыми мы занимались на прошлом занятии.
Например, с помощью нее мы можем создать базу данных, не используя вышерассмотренную функцию mysql_create_db().
$link = mysql_connect(’somehost.ru’, ’artem’, ’123456’) or die("Не
могу соединиться"); mysql_query("CREATE database my_db", $link) or die("Ошибка запроса"); |
Предположим, мы хотим ввести данные в базу данных, созданную на прошлом уроке.
$link = mysql_connect(’somehost.ru’, ’artem’, ’123456’) or die("Не
могу соединиться"); mysql_select_db(’myphp’, $link); $query = "INSERT INTO lessons (title, body) VALUES ( ’Выражаемся по-ПиЭйчПовски’, ’Итак, на прошлом уроке я обещал начать урок 3 с изучения следующего, четвертого типа данных...’ )"; mysql_query($query, $link); |
А теперь давайте выберем данные, которые ввели на этом и прошлом уроке. Это делается следующим образом:
// предположим, что уже соединились с MySQL // и выбрали базу данных ’myphp’ $query = "SELECT title, body FROM lessons"; $result = mysql_query($query, $link); while ($row = mysql_fetch_array($result)) { echo "<h1>".$row[’title’]."</h1><p>"; echo $row[’body’]."</p>"; } |
Заметьте, что mysql_query возвращает не сам результат, а идентификатор результата, который может быть использован другими функциями. Таким образом, $result в примере выше не содержим необходимую нам информацию в явном виде, его значение - лишь ссылка на нее.
Извлечение информации.
Чтобы извлечь информацию в понятную нам форму, необходимо воспользоваться функциями mysql_fetch_array(), mysql_fetch_row() или другими более специфическими функциями.
Функция mysql_fetch_array(), использованная в примере выше, осуществляет выборку записи в виде ассоциативного массива. Заметьте, эта функция, как и другие функции извлечения информации, не работает непосредственно с MySQL, а лишь обрабатывает полученный результат, поэтому ссылка на идентификатор соединения для работы этой функцией не требуется. Ее обязательный аргумент - лишь идентификатор результата, полученный функцией mysql_query().
За каждый раз своего выполения эта функция обрабатывает лишь одну строку результата, тем самым, чтобы получить данные из всего результата выполнения mysql_query, необходимо использовать функцию в цикле. Например:
$result = mysql_query("SELECT id, title FROM lessons", $link); $first_row = mysql_fetch_array($result); echo "Первая запись:<br>".$first_row[’id’]." - ".$first_row[’title’]."<br>"; echo "Остальные записи:<br>"; while ($row = mysql_fetch_array($result)) { echo $row[’id’]." - ".$row[’title’].’<br>’; } |
Данный пример может вывести у вас непонятные символы - текст в неизвестной кодировке. Это связано с тем, что MySQL использует по умолчанию кодировку latin, тогда как отображение данных происходит на веб-странице с кодировкой, скорее всего, windows-1251. Тем самым, данные введенные посредством одной кодировки и показанные - другой, превращаются в абракадабру. Но если вы будете вводить данные через веб-интерфейс и выводить через него же, то "смешения" кодировок не произойдет, и текст будет выводиться в нормальном виде.
Функция mysql_fetch_row() аналогична вышерассмотренной функции, за исключением того, что она возвращает пронумерованный массив, а не ассоциативный.
В случае, когда идентификатор результата содержит значения небольшого количества полей, или, что еще лучше, одного, то тогда становится удобным размещать данные не в массиве, а в отдельных переменных. Этим и занимается функция mysql_result(). Она имеет несколько более сложный синтаксис, чем mysql_fetch_array, поэтому рассмотрим его подробнее:
mysql_result(идентификатор результата, номер записи, [поле]); |
Номер записи - это номер строки, из которой требуется получить данные. Поле - это название или номер поля указанной записи, из которой необходимо получить данные.
$result = mysql_query("SELECT title FROM lessons",
$link); $title1 = mysql_result($result, 0); $title2 = mysql_result($result, 1); |
Так как мы сделали выборку только по одному полю, то третий аргумент функции mysql_result() необязателен.
Закрытие соединения с MySQL.
При завершении работы скрипта PHP самостоятельно закрывает соединение с сервером MySQL, так что вы можете не заботиться об этом. Но все же правилом хорошего тона считается принудительное закрытие соединения после выполнения всех необходимых операций с базами данных.
Закрытие соединения осуществляется с помощью функции
В заключение.
Конечно, все функции PHP для работы с данными MySQL невозможно охватить в пределах одного урока. Мы разобрали самые важные и наиболее используемые из них. Настоятельно рекомендую ознакомиться с другими в документации PHP.
На этом и закончим наш урок. До встречи.
Нет комментариев. Ваш будет первым!