Только для читателей Lifeexample возможно открыть интернет-магазин на Moguta.CMS со скидкой в 15%
PHP работа с базой данных (Часть 1)
Здравствуй уважаемый читатель блога LifeExample, во введении к серии статей «PHP работа с базой данных» мы поставили себе цель разобраться, с тем как работать с данными хранящимися в базе MySQl?
Давайте порядку разберём следующие вопросы:
- Как подключиться к БД?
- Как выполнить запрос к базе?
- Как добавить таблицу в базу?
Как подключиться к БД?
Чтобы php скрипт мог работать с базой данных, ему необходимо установить соединение с базой. Для этого скрипт должен понимать, по какому адресу устанавливать соединение, какую базу искать и какой пароль предоставить серверу базы данных, что бы получить доступ к информации.Зададим константы необходимые для установки соединения с сервером баз данных
Пример объявления констант для подключения к базе:
1 2 3 4 5 6 | <?php define('HOST', 'localhost'); define('USER', 'root'); define('PASSWORD', ''); define('NAME_BD', 'myBase'); ?> |
Теперь, когда мы имеем все необходимое, воспользуемся командой mysql_connect(). В случае успешного соединения функция вернет указатель на соединение с MySQL, в противном случае вернется флаг FALSE.
Пример подключения к базе данных:
1 2 3 4 5 6 | <?php $connect = mysql_connect(HOST, USER, PASSWORD) or die("Невозможно установить соединение" .mysql_error( )); print ("Соединение с базой установлено."); ?> |
В этом примере задействована еще одна команда mysql_error(), относящаяся к работе c БД. Из названия ясно, что она возвращает ошибку из-за, которой не удалось соединиться с базой. Иногда бывает полезным узнать подробности ошибки, поэтому не стоит пренебрегать такой возможностью.
Подключившись к серверу базы, нужно сообщить ему о том с какой базой мы собираемся работать, для этого нам придется выполнить еще одну не хитрую строчку кода.
Выбор базы:
1 2 3 4 5 | <?php mysql_select_db(NAME_BD, $connect) or die ("Невозможно выбрать указанную базу" .mysql_error( )); ?> |
И так, мы выбрали базу данных и теперь можем делать с ней все, что нам вздумается. Например мы можем выполнить простейший запрос к БД. Кстати эта задача номер два, с которой мы собирались разобраться во вводной статье, пришло время разораться с ней.
Как выполнить запрос к базе?
Для начала придумаем SQL запрос, например вот такой:
1 | SELECT COUNT(*) FROM myBase |
Запрос приведенный выше, должен вернуть нам количество записей в таблице myBase. Для того, чтобы выполнить, запрос нужно воспользоваться функцией mysql_query(). Вообще функция принимает два параметра: первый — сам запрос, второй — идентификатор подключения к базе, но так как мы используем только одно подключение, то второй параметр можно опустить.
Пример выполнения запроса:
1 2 3 4 5 | <?php $query = mysql_query("SELECT COUNT(*) FROM myBase") or die ("Ошибка выполнения запроса:".mysql_error( )); echo "Запрос выполнен успешно."; ?> |
Приведенный примеp только демонстрирует успешность выполнения запроса, чтобы посмотреть результат нужно вывести его отдельно, но об этом мы поговорим в следующей части PHP работа с базой данных (Часть 2).
Как добавить таблицу в базу?
Зная назначение функции mysql_query(), нам нужно только подобрать подходящий MySql запрос, с помощью которого можно добавить в базу новую таблицу.
Пример запроса добавления таблицы:
1 | CREATE TABLE myNewBase (id INTEGER, content CHAR(10)); |
Результатом такого запроса будет созданная таблица с именем myNewBase, а также полями id и content. Выполним его с помощью команды mysql_query(), как показано в примере.
Пример выполнения запроса MySQL
1 2 3 4 5 | <?php $query = mysql_query("CREATE TABLE myNewBase (id integer, content char(10));") or die ("Ошибка выполнения запроса:".mysql_error()); echo "Запрос выполнен успешно."; ?> |
Ну вот мы и разобрались с первыми тремя вопросами поставленными в водной статье PHP работа с базой данных (Введение).
Проведя все свои эксперименты с таблицами, после открытия соединения с базой функцией mysql_connect(), необходимо закрыть это соединение с помощью соответствующей функции mysql_close().
Пример завершения работы с базой:
1 2 3 | <?php mysql_close($connect); ?> |
В следующей статье PHP работа с базой данных (Часть 2). мы поговорим, о том как считывать информацию из таблиц базы, и как грамотно вывести эту информацию на страницу сайта. Спасибо за внимание, пишите отзывы со своими рекомендациями и вопросами касающимися данной статьи.
Чтобы не пропустить публикацию следующей статьи подписывайтесь на рассылку по E-mail или RSS ленту блога.
Комментарии
в пункте «Пример выполнения запроса MySQL» ошибка, ага.
Мм.. что-то я не вижу в чем именно. Укажите точнее.
Замечание:
1. Строка запроса НЕ должна заканчиваться точкой с запятой.
2. Здесь «Проведя все свои эксперименты с таблицами, после открытия соединения с базой функцией mysql_connect(), необходимо закрыть это соединение с помощью соответствующей функции mysql_close()» сказано не точно:
«Использование mysql_close() не необходимо для непостоянных соединений.Т.е.,»НЕ открытые функцией mysql_pconnect()». Они автоматически закрываются в конце скрипта.»
Мда…я начал читать про БД вот буквально вчера и все же уже успел узнать про то, что запросы к базе не заканчиваются точкой с запятой. Мне кажется яндексу стоило бы пересмотреть алгоритмы ранжирования сайтов в идеале, сайты с подобными ошибками не должны быть на первых местах выдачи, это вредно для новичков.
При работе с БД, действительно точки с запятой являются необязательными, а при некоторых настройках СУБД приводят к ошибкам. Но в данном случае запросы созданы в качестве примера работы в phphMyAdmin, где точка с запятой является разделителем запросов и в полене адекватно обрабатывается.
Замечание — Samigo
Ты не прав на счет второго пунка «использование mysql_close() не необходимо»
Я могу тебе превести яркий пример:
Пусть время выполнения php скрипта состовляет — 3 сек. со всеми обращениями к базе данных (пример PHP движок WordPress)
В соостветсвии с указанным примером объявляется один пользователь для подключениея к MySQL (кол-во одновременных подключений ограничено), а команды на обновление или добавления данных блокируют таблицы до закрытия соединения. Таким образом если у нас будут выполнятся одновременно 2-скрипта
То для второго понадобится мак. 6 сек на выполнение — Так как 1-й заблокировал таблицы и не закрыл соединение до окончания своего выполнения. А если у нас произошло 100 обращений к скрипту, что тогда?
Я молчу вообще про примеры параллельных вычислений (потоки) с обращением к базе данных. Золотое правило СУБДД: сделал запрос — закрой соединение.
PS: автор прав mysql_close();
2 Данил сказал:»команды на обновление или добавления данных блокируют таблицы до закрытия соединения»
А это — не правильно.
База или запись блокируется на период записи и все. Соединение открывается один раз и больше не открывается. А закрывать не надо.
Я всё понял, спасибо!!
Насколько я понял показывать ошибки не стоит, лучше их записывать в бд, а клиенту выводить просто мол ошибочка разберемся! Хотя современные хостинги и так выключают показ ошибок.