Все ленты — последние статьи

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

 

Автор: Михаил Пестречихин
Источник: http://www.codething.ru/phpmysqli.php

Вы читаете новую версию статьи "Основные приемы работы с СУБД MySQL, используя язык программирования PHP". Я не стал удалять с сайта предыдущую версию, но знайте, что не следует использовать описанные в ней методы для новых проектов, так как она касается PHP-расширения mysql, которое с версии PHP 5.5.0 считается устаревшим!

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

 

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

 
  1. extension=php_mysqli.dll  

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

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

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

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

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

 
  1. $db = new mysqli("localhost""root""");  

Как видно из примера, мы используем объекто-оринтированную форму вызова функций и работаем с объектом $db. Тем кто не привык к такой форме записи, придется открыть документацию к PHP и найти там аналогичные функции, записанные в процедурно-ориентированной форме, они существуют.

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

На сервере MySQL может находиться множество различных баз данных и в каждой базе данных может быть множество таблиц.

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

 
  1. $db->query("CREATE DATABASE IF NOT EXISTS myDataBase");  

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

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

 
  1. $db->select_db("myDataBase");  

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

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

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

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

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

 

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

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

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

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

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

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

 
  1. $r = $db->query ("SELECT * FROM phones");  

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

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

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

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

 
  1. SELECT * FROM phones  

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

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

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

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

 
  1. SELECT * FROM phones ORDER BY fio  

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

 
  1. SELECT * FROM phones ORDER BY fio DESC  

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

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

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

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

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

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

 
  1. $db->query("DELETE FROM phones");  

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

 
  1. $db->query("DELETE FROM phones WHERE fio LIKE 'П%'");  

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

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

 
  1. $db->query("DROP TABLE phones");  

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

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

 
  1. $db->query("DROP DATABASE myDataBase");  

9. Полезные моменты

Если вам необходимо узнать количество записей, выданных запросом SELECT, то используйте значение переменной $r->num_rows, где $r — это результат выполнения функции query().

Если вам необходимо узнать id добавленной записи (в случае, если id задается автоматически), следует после вызова функции $db->query() прочитать значение переменной $db->insert_id.

phpmysqli.zip — пример программы для работы с MySQL, используя язык PHP и расширение mysqli
http://www.mysql.com/ — сайт разработчиков СУБД MySQL;
http://www.mysql.ru/ — русский сайт поддержки СУБД MySQL.

Хотите дополнить материал? — Пишите нам: Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.