Только для читателей Lifeexample возможно открыть интернет-магазин на Moguta.CMS со скидкой в 15%

<<< Добавление кнопки Facebook || PHP работа с базой данных (Введение) >>>

PHP работа с базой данных (Часть 1)

28.10.2011
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» ошибка, ага.

    • Мм.. что-то я не вижу в чем именно. Укажите точнее.

  • Samigo

    Замечание:
    1. Строка запроса НЕ должна заканчиваться точкой с запятой.
    2. Здесь «Проведя все свои эксперименты с таблицами, после открытия соединения с базой функцией mysql_connect(), необходимо закрыть это соединение с помощью соответствующей функции mysql_close()» сказано не точно:
    «Использование mysql_close() не необходимо для непостоянных соединений.Т.е.,»НЕ открытые функцией mysql_pconnect()». Они автоматически закрываются в конце скрипта.»

    • mika

      Мда…я начал читать про БД вот буквально вчера и все же уже успел узнать про то, что запросы к базе не заканчиваются точкой с запятой. Мне кажется яндексу стоило бы пересмотреть алгоритмы ранжирования сайтов в идеале, сайты с подобными ошибками не должны быть на первых местах выдачи, это вредно для новичков.

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

  • Данил

    Замечание — Samigo
    Ты не прав на счет второго пунка «использование mysql_close() не необходимо»
    Я могу тебе превести яркий пример:
    Пусть время выполнения php скрипта состовляет — 3 сек. со всеми обращениями к базе данных (пример PHP движок WordPress)
    В соостветсвии с указанным примером объявляется один пользователь для подключениея к MySQL (кол-во одновременных подключений ограничено), а команды на обновление или добавления данных блокируют таблицы до закрытия соединения. Таким образом если у нас будут выполнятся одновременно 2-скрипта
    То для второго понадобится мак. 6 сек на выполнение — Так как 1-й заблокировал таблицы и не закрыл соединение до окончания своего выполнения. А если у нас произошло 100 обращений к скрипту, что тогда?

    Я молчу вообще про примеры параллельных вычислений (потоки) с обращением к базе данных. Золотое правило СУБДД: сделал запрос — закрой соединение.

    PS: автор прав mysql_close();

    • Samigo

      2 Данил сказал:»команды на обновление или добавления данных блокируют таблицы до закрытия соединения»
      А это — не правильно.
      База или запись блокируется на период записи и все. Соединение открывается один раз и больше не открывается. А закрывать не надо.

  • Вит

    Я всё понял, спасибо!!

  • Павел

    Насколько я понял показывать ошибки не стоит, лучше их записывать в бд, а клиенту выводить просто мол ошибочка разберемся! Хотя современные хостинги и так выключают показ ошибок.

  • Оставить комментарий

    Не отвечать

    Подписаться на комментарии к этой статье по RSS

    Яндекс.Метрика