Основные приемы работы с СУБД MySQL, используя язык программирования PHP

В программировании часто возникает задача работы с большими объемами данных. Даже когда структура данных спроектирована, часто не хочется придумывать и реализовывать эффективные способы работы с этими данными, а именно такие, как выбор, изменение, сортировка, хранение. В таких случаях к нам приходит на помощь СУБД, которая берет все эти функции на себя. В нашем случае, в роли СУБД будет выступать MySQL.

Функции для работы с СУБД MySQL имеются и в PHP4, и в PHP5. В PHP4 функции работы с MySQL доступны сразу, а для использования этих функций в PHP5 надо убедиться, что в конфигурационном файле php.ini подключено расширение для работы с MySQL, а именно, должна быть активной строчка:

  1. extension=php_mysql.dll
extension=php_mysql.dll

Последнюю версию MySQL можно скачать с сайта разработчика:
http://www.mysql.com/

В данной статье рассмотрим основные приемы работы с СУБД MySQL, используя язык программирования PHP.

1. Соединение с сервером MySQL и подключение к базе данных

Соединиться с сервером СУБД MySQL можно при помощи функции mysql_connect(), которой достаточно передать путь к серверу, имя пользователя и пароль к MySQL.

Например, следующий код позволит подключиться к MySQL, находящейся на локальной машине, с именем root и с пустым паролем:

  1. mysql_connect("localhost", "root", "");
mysql_connect("localhost", "root", "");

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

На сервере MySQL может находиться множество различных баз данных и в каждой базе данных может быть множество таблиц. Если базы данных на сервере еще не создано, её необходимо создать. Для создания базы данных MySQL в PHP рекомендуется использовать следующий код:

  1. mysql_query ("CREATE DATABASE IF NOT EXISTS myDataBase");
mysql_query ("CREATE DATABASE IF NOT EXISTS myDataBase");

где myDataBase - это произвольное название создаваемой базы данных. Функция mysql_query() - отправляет произвольный запрос в СУБД MySQL, написанный на языке SQL. В нашем случае, мы отправили запрос на создание базы данных.

Для подключения к базе данных используется функция mysql_select_db(), которой необходимо передать название базы данных. Например,

  1. mysql_select_db ("myDataBase");
mysql_select_db ("myDataBase");

2. Создание таблицы

В каждой базе данных MySQL может быть создано множество таблиц. Для примера, создадим таблицу телефонного справочника, в которой будут храниться ФИО абонентов и номера телефонов.

  1. mysql_query ("CREATE TABLE IF NOT EXISTS phones (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,".
  2. ."fio VARCHAR(100), phone VARCHAR(50))");
mysql_query ("CREATE TABLE IF NOT EXISTS phones (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,".
			."fio VARCHAR(100), phone VARCHAR(50))");

Данный запрос можно прочитать так: если таблица phones не создана, то создаем таблицу phones, с полями: id - идентификатор записи и первичный ключ, fio - текстовое поле, длиной не более 100 символов, phone - текстовое поле, длиной не более 50 символов.

В созданную таблицу можно записать произвольное количество записей.

3. Запрос на запись данных

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

  1. mysql_query ("INSERT INTO phones (fio, phone) VALUES ('Пупкин Василий', '123-45-67')");
mysql_query ("INSERT INTO phones (fio, phone) VALUES ('Пупкин Василий', '123-45-67')");

Этой строкой мы добавили новую запись в базу данных. В поле fio добавили строку 'Пупкин Василий', в поле phone добавили строку '123-45-67'. Поле id заполнилось автоматически. Добавьте еще несколько произвольных записей самостоятельно.

4. Запрос на выборку данных

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

  1. $r=mysql_query ("SELECT * FROM phones");
$r=mysql_query ("SELECT * FROM phones");

В переменную $r - попадет результат работы запроса. Для того, чтобы извлечь из него данные их всех записей БД, применим следующий программный код:

  1. while ($row=mysql_fetch_array ($r))
  2. echo "ФИО: ".$row['fio'].", телефон: ".$row['phone'];
while ($row=mysql_fetch_array ($r))
	echo "ФИО: ".$row['fio'].", телефон: ".$row['phone'];

функция mysql_fetch_array() позволяет работать с одной текущей записью из базы данных, организуя данные из этой строки в виде массива. Так, например, запись из поля fio таблицы попадает в ассоциативный массив $row['fio'].

Можно выводить не все записи, а записи удовлетворяющие какому-либо условию, например, если вместо

  1. SELECT * FROM phones
SELECT * FROM phones

написать запрос

  1. SELECT * FROM phones WHERE fio LIKE 'П%'
SELECT * FROM phones WHERE fio LIKE 'П%'

то получим список абонентов, фамилии которых начинаются на букву 'П'.

Если написать запрос

  1. SELECT * FROM phones ORDER BY fio
SELECT * FROM phones ORDER BY fio

то записи будут упорядочены по алфавиту. А если написать запрос

  1. SELECT * FROM phones ORDER BY fio DESC
SELECT * FROM phones ORDER BY fio DESC

то записи будут упорядочены обратно алфавиту.

5. Запрос на изменение данных

Если данные требуют изменения, то можно написать запрос, на изменение данных. Например, следующим запросом заменим в базе данных абонентов телефон '123-45-67', заменим на '765-43-21'.

  1. mysql_query ("UPDATE phones SET phone='765-43-21' WHERE phone='123-45-67'");
mysql_query ("UPDATE phones SET phone='765-43-21' WHERE phone='123-45-67'");

6. Запрос на удаление данных

Для того, чтобы удалить данные из таблицы phones, необходимо написать следующий запрос,

  1. mysql_query ("DELETE FROM phones");
mysql_query ("DELETE FROM phones");

Такой запрос удалит все данные из таблицы. Скорее всего нам потребуется удалить только данные, удовлетворяющие какому-либо условию, например, удалить все записи, фамилии в которых начинаются на букву 'П'. Для этого напишем так:

  1. mysql_query ("DELETE FROM phones WHERE fio LIKE 'П%'");
mysql_query ("DELETE FROM phones WHERE fio LIKE 'П%'");

7. Запрос на удаление таблицы

Удалить таблицу phones из базы данных MySQL при помощи PHP можно следующим запросом:

  1. mysql_query ("DROP TABLE phones");
mysql_query ("DROP TABLE phones");

8. Запрос на удаление базы данных

Удалить базу данных MySQL можно следующим запросом:

  1. mysql_query ("DROP DATABASE myDataBase");
mysql_query ("DROP DATABASE myDataBase");