Разработка диалоговой системы с помощью СУБД MySQL и языка Web-программирования PHP

Рассмотрим как связать PHP и MySQL т.е. как получить данные из базы данных MySQL в PHP скрипт.

Для связи PHP и MySQL нужно знать:

  • Хост — адрес сервера баз данных MySQL
  • Имя базы данных
  • Имя пользователя
  • Пароль — пароль для доступа к БД
  • Некоторые SQL команды

Итак, алгоритм такой:

  1. Устанавливаем соединение с сервером
  2. Выбираем нужную базу данных
  3. Делаем запрос к серверу баз данных (SQL запрос)
  4. Обрабатываем результат запроса, если это необходимо
  5. Закрываем соединение (отключаемся от сервера БД)

По части PHP, чтобы работать с БД надо знать несколько функций.

  • mysql_connect();
  • mysql_select_db();
  • mysql_query();
  • mysql_fetch_array();
  • mysql_close();

Это тот минимум, который позволит вам устанавливать соединение с сервером MySQL, выбирать базы данных и делать запросы к серверу баз данных.

Рассмотрим эти функции в деле т.е. на примере.

Допустим в нашей базе данных храниться одна таблица со следующей структурой:

имя поля тип(длина) описание
id целый(2) уникальный номер
name символьный(100) имя
tel символьный(20) телефон

Таблица имеет имя: customer, а наша база данных называется database.

Допустим, что ваши данные для подключения к серверу MySQL Такие:

  • Хост: localhost
  • Имя пользователя: Guest
  • Пароль: mypassword

Для начала необходимо создать нашу таблицу customer. Напишем скрипт который создаст в базе данных database таблицу customer. Назовём файл как install.php.

Файл install.php

<?php
         // Данные для MySQL сервера
        $DBHost = "localhost";         // Хост
        $DBUser = "Guest";             // Имя пользователя
        $DBPassword = "mypassword";           // Пароль
        $DBName = "database";          // Имя базы данных
        // Подключаемся к MySQL серверу
        $Link = mysql_connect($DBHost, $DBUser, $DBPassword);
         // Выбираем нашу базу данных
        mysql_select_db($DBName, $Link);
         // Создаём таблицу customer
        // т.е. делаем SQL запрос
        $Query = "CREATE TABLE customer (id INT(2) PRIMARY KEY
        AUTO_INCREMENT, name VARCHAR(100), tel VARCHAR(20))";
        mysql_query($Query, $Link);
         // Закрываем соединение
        mysql_close($Link)
 ?>

Функция mysql_connect() возвращает идентификатор соединения. Этот идентификатор необходимо указывать во всех MySQL функциях. Можно провести аналогию с указателем на файл (file pointer), который используется функциями по работе с файлами. В параметрах функции мы указали хост, имя пользователя и пароль к базе данных.

На сервере MySQL храниться не только ваша база данных. Сервер может обслуживать тысячи таких баз данных. Поэтому, чтобы получить доступ к своей базе данных, необходимо выбрать её. Выбор базы данных осуществляется функцией mysql_select_db(). В параметрах указывается: имя требуемой базы данных $DBName и идентификатор соединения $Link, который мы получили с помощью функции mysql_connect().

После того как вы подключились к серверу MySQL и выбрали базу данных, вы делаете SQL запрос. В запросе указываем, что мы хотим создать таблицу с именем customer и со структурой приведённой в таблице выше. Запрос к серверу MySQL осуществляется с помощью функции mysql_query(). В параметрах указывается сам запрос $Query и идентификатор соединения $Link.

И, наконец, отключаемся от сервера (закрываем соединение) функцией mysql_close(). В параметрах указываем идентификатор того соединения, которое нужно закрыть.

Если вы всё сделали правильно, то на сервере MySQL в вашей базе данных, появится таблица customer.

После того как мы создали таблицу, её надо заполнить т.е. записать в нёё какие-нибудь данные (записи). Напишем скрипт, который будет добавлять запись в нашу таблицу. Назовём файл скрипта как insert.php.

Файл insert.php

<?php
         // Данные для MySQL сервера
        $DBHost = "localhost";         // Хост
        $DBUser = "Guest";             // Имя пользователя
        $DBPassword = "mypassword";           // Пароль
        $DBName = "database";          // Имя базы данных
              // Подключаемся к MySQL серверу
        $Link = mysql_connect($DBHost, $DBUser, $DBPassword);
               // Выбираем нашу базу данных
        mysql_select_db($DBName, $Link);
                // Добавляем запись в нашу таблицу customer
        // т.е. делаем SQL запрос
        $Query = "INSERT INTO customer VALUES(0,'Иванов Иван Иванович',
        '(095) 555-55-55')";
                mysql_query($Query, $Link);
                // Закрываем соединение
        mysql_close($Link);
        ?>

Посмотрев этот скрипт вы заметете, что он отличается от предыдущего только строкой запроса $Query.

Теперь когда мы умеем записывать данные в базу данных, перейдём к процедуре запроса данных из базы MySQL. Для этого напишем скрипт и назовём файл select.php.

Файл select.php

<?php
         // Данные для MySQL сервера
        $DBHost = "localhost";         // Хост
        $DBUser = "Guest";             // Имя пользователя
        $DBPassword = "mypassword";           // Пароль
        $DBName = "database";          // Имя базы данных
                // Подключаемся к MySQL серверу
        $Link = mysql_connect($DBHost, $DBUser, $DBPassword);
                // Выбираем нашу базу данных
        mysql_select_db($DBName, $Link);
                // Добавляем запись в нашу таблицу customer
        // т.е. делаем SQL запрос
        $Query = "SELECT * FROM customer";
                // Запрашиваем
        $Result = mysql_query($Query, $Link);
                while($Rows = mysql_fetch_array($Result, MYSQL_ASSOC))
        {
               printf("id:%d, name:%s, tel:%s",
                       Rows['id'],Rows['name'],Rows['tel']);
        }
                // Закрываем соединение
        mysql_close($Link);
        ?>

Естественно изменилась строка запроса $Query, которая теперь содержит SQL-оператор SELECT. Так же добавился небольшой код while() { …. }. Функция mysql_fetch_array() обрабатывает результат запроса и возвращает массив полей текущей строки результата.

Константа MYSQL_ASSOC указывает на то, что функция должна вернуть ассоциативный массив полей. После того как функция mysql_fetch_array() обработает все строки результата, она вернёт значение FALSE и тогда цикл while() — не выполниться.

Рубрика Информационные технологии. Добавьте постоянную ссылку на эту страницу в закладки.