Опубликован: 16.01.2007 | Уровень: для всех | Доступ: платный
Дополнительный материал 1:

PHP и MySQL

< Лекция 11 || Дополнительный материал 1: 1234 || Дополнительный материал 2 >

Для понимания этой лекции от вас требуются знания принципов работы баз данных. Для начала создаем базу данных и таблицу. Входим в командную строку MySQL, и выполняем команды:

mysql> CREATE DATABASE mydb;

mysql> CREATE TABLE employees 
(id tinyint(4) DEFAULT '0' NOT NULL AUTO_INCREMENT,
first varchar(20), last varchar(20), address varchar(255),
position varchar(50), PRIMARY KEY (id), UNIQUE id (id));

INSERT INTO employees VALUES 
(1,'Bob','Smith','128 Here St, Cityname','Marketing Manager');
INSERT INTO employees VALUES
(2,'John','Roberts','45 There St ,Townville','Telephonist');
INSERT INTO employees VALUES
(3,'Brad','Johnson','1/34 Nowhere Blvd, Snowston','Doorman');

В результате будет создана база данных mydb. В ней будет создана таблица employees (работники). И в эту таблицу будут вставлены три записи с данными о работниках. Для экспериментов с PHP и MySQL этого вполне достаточно.

Давайте выведем эти данные из базы данных в HTML-страницу. Для общения с MySQL из PHP понадобятся следующие функции.

  • int mysql_connect(string hostname, string username, string password); - создать соединение с MySQL.

Параметры:

Hostnameимя хоста, на котором находится база данных.

Usernameимя пользователя.

Passwordпароль пользователя.

Функция возвращает параметр типа int, который больше 0, если соединение прошло успешно, и равен 0 в противном случае.

  • int mysql_select_db(string database_name, int link_identifier); - выбрать базу данных для работы.

Параметры:

Database_name – имя базы данных.

link_identifierID соединения, которое получено в функции mysql_connect. (параметр необязательный, если он не указывается, то используется ID от последнего вызова mysql_connect )

Функция возвращает значение true или false

  • int mysql_query(string query, int link_identifier); - функция выполняет запрос к базе данных.

Параметры:

query – строка, содержащая запрос

link_identifier – см. предыдущую функцию.

Функция возвращает ID результата или 0, если произошла ошибка.

  • int mysql_result(int result, int i, column); - функция возвращает значение поля в столбце column и в строке i.
  • int mysql_close(int link_identifier); - функция закрывает соединение с MySQL.

Параметры:

link_identifier – см. выше.

Функция возвращает значение true или false

Создайте файл с расширением .php и наберите в нем следующий текст:

<html>
   <body>
      <?php
         $db = mysql_connect("localhost", "root");
         mysql_select_db("mydb",$db);

         $result = mysql_query("SELECT * FROM employees",$db);

         printf("First Name: %s<br>\n", mysql_result($result,0,"first"));
         printf("Last Name: %s<br>\n", mysql_result($result,0,"last"));
         printf("Address: %s<br>\n", mysql_result($result,0,"address"));
         printf("Position: %s<br>\n", mysql_result($result,0,"position"));
         mysql_close($db);
      ?>
   </body>
</html>

Теперь рассмотрим построчно, что происходит в этой программе. Функция mysql_connect() открывает связь с сервером баз данных MySQL. В качестве параметров мы указываем ей имя узла ( localhost ), на котором находится база данных, имя пользователя ( root ), под которым мы будем с ней работать, и пароль (в данном случае он пустой и потому не указывается).

Имя узла localhost означает, что сервер MySQL находится на той же машине, что и сам Web-сервер с PHP - движком. В принципе ничто не мешает вам (имея права) обратиться к серверу MySQL, который находится на соседней машине или вообще на другом конце земного шара.

В результате выполнения этой функции получаем некое значение, которое присваиваем переменной $db. Эта переменная называется идентификатором соединения (см. выше описание синтаксиса).

Соединившись с сервером выбираем базу данных, с которой будем работать (ведь на одном и том же сервере могут "крутиться" несколько баз данных). Это делается с помощью функции mysql_select_db(). В качестве параметров мы передаем название нужной нам базы данных и идентификатор соединения, полученный нами при выполнении предыдущей команды.

В результате выполнения функции mysql_select_db() мы получаем значение true или false. Если соединение с базой данных произошло успешно – true, если нет – false. Для того, чтобы наша программа-страница работала более интеллектуально, мы можем при желании проанализировать возвращаемое значение и если оно будет false, вывести хорошее информативное сообщение об ошибке.

И наконец мы обращаемся к базе данных с запросом, написанным на языке SQL. Для этого служит функция mysql_query(). В качестве первого параметра мы передаем текст запроса, а в качестве второго – передаём идентификатор, полученный от выполнения функции mysql_connect().

Результаты выполнения функции mysql_query() – записи, удовлетворяющие нашему запросу - помещаем в переменную $result.

И наконец, с помощью функции mysql_result() извлекаем из результатов выполнения нашего запроса (т.е. переменной $result ), первый ряд-запись (который имеет порядковый номер 0), и значение определенного поля (по его имени). Перебирая друг за другом записи от 0 до 2, мы выберем все записи, что хранятся в нашей маленькой базе данных.

В данном коде в полной мере используется функция printf(). Если говорить коротко, то в каждой приведенной выше строке комбинация символов " %s " обозначает, что вместо нее должна быть поставлена переменная, идущая во второй части выражения printf. Причем эта переменная должна быть переведена в тип "строковая переменная". Более подробное описание синтаксиса функции printf() читайте в руководстве по языку.

Далее мы познакомимся с более интеллектуальными, чем mysql_result(), функциями выборки данных из БД mysql_fetch_row() и mysql_fetch_array(), В дальнейшем мы рекомендуем пользоваться именно ими, как более быстрыми и удобными, чем mysql_result().

< Лекция 11 || Дополнительный материал 1: 1234 || Дополнительный материал 2 >
Александра Каева
Александра Каева
Диляра Кенжебай
Диляра Кенжебай
Александр Смирнов
Александр Смирнов
Россия, Астрахань
Дмитрий Павлов
Дмитрий Павлов
Россия, Новокузнецк