Поиск по сайту
PHP Поиск
- свадебный салон Белая Орхидея.
- Рекомендуем мойка окон (www.anbcapital.ru).
Связь с базами данных MySQL
СУБД MySQL - одна из множества баз данных, поддерживаемых в PHP. Система MySQL распространяется бесплатно и обладает достаточной мощностью для решения реальных задач.
Краткое введение в MySQL
SQL - это аббревиатура от слов Structured Query Language, что означает структурированный язык запросов. Этот язык является стандартным средством для доступа к различным базам данных.
Система MySQL представляет собой сервер, к которому могут подключаться пользователи удаленных компьютеров.
Для работы с базами данных удобно пользоваться средством, входящее в комплект Web-разработчика: Denwer phpMyAdmin. Здесь можно создать новую базу данных, создать новую таблицу в выбранной базе данных, заполнить таблицу данными, а также добавлять, удалять и редактировать данные.
В MySQL определены три базовых типа данных: числовой, дата и время и строчный. Каждая из этих категорий подразделяется на множество типов. Основные из них:
| Тип | Описание | ||||||||||||||||||||
INT| Целое число
| TINYINT | Маленькое целое число (-127 до 128 или от 0 до 255)
| FLOAT | Вещественное число с плавающей точкой
| DATE | Дата. Отображается в виде ГГГГ-ММ-ДД
| TIME | Время. Отображается в виде ЧЧ:ММ:СС
| DATETIME | Дата и время. Отображается в виде ГГГГ-ММ-ДДЧЧ:ММ:СС
| YEAR[(2|4)] | Год. Можно определить двух- или четырехциферный формат
| CHAR(M) | Строка фиксированной длины М (M<=255)
| VARCHAR(M) | Строка произвольной длины до М (M<=255)
| TEXT | Длинные текстовые фрагменты (<=65535)
| BLOB | Большие двоичные объекты (изображения, звуки)
| |
Каждый столбец после своего типа данных содержит и другие спецификаторы:
| Тип | Описание | ||||||
NOT NULL| Все строки таблицы должны иметь значение в этом атрибуте.
Если не указано, поле может быть пустым (NULL)
| AUTO_INCREMENT |
Специальная возможность MySQL, которую можно задействовать в
числовых столбцах. Если при вставке строк в таблицу оставлять такое поле пустым,
MySQL автоматически генерирует уникальное значение идентификатора. Это значение
будет на единицу больше максимального значения, уже существующего в столбце. В
каждой таблице может быть не больше одного такого поля. Столбцы с
AUTO_INCREMENT должны быть проиндексированными
| PRIMARY KEY | Столбец является первичным
ключом для таблицы. Данные в этом столбце должны быть уникальными.
MySQL автоматически индексирует этот столбец
| UNSIGNED | После целочисленного типа означает, что его значение
может быть либо положительным, либо нулевым
| |
Создание новой базы данных MySQL осуществляется при помощи SQL-команды CREATE DATABASE.
CREATE DATABASE IF NOT EXISTS `base` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_bin
Создание новой таблицы осуществляется при помощи SQL-команды CREATE TABLE. Например, таблица books для книжного магазина будет содержать пять полей: ISBN, автор, название, цена и количество экземпляров:
CREATE TABLE books (ISBN CHAR(13) NOT NULL,
PRIMARY KEY (ISBN),
author VARCHAR(30),
title VARCHAR(60),
price FLOAT(4,2),
quantity TINYINT UNSIGNED);
Чтобы избежать сообщения об ошибке, если таблица уже есть необходимо изменить первую строчку, добавив фразу "IF NOT EXISTS":
CREATE TABLE IF NOT EXISTS books ...
Добавление данных в эту таблицу осуществляется при помощи SQL-команды INSERT. Например:
INSERT INTO books ( ISBN, author, title, price, quantity )
VALUES ('5-8459-0184-7', 'Зандстра Мэт',
'Освой самостоятельно PHP4 за 24 часа', '129', '5');
Для извлечения данных из таблицы служит оператор SELECT. Он извлекает данные из базы, выбирая строки, которые отвечают заданному критерию поиска. Оператор SELECT сопровождает немалое количество опций и вариантов использования.
Символ * означает, что необходимы все поля. Например:
SELECT * FROM books;
Для получения доступа только к некоторому полю следует указать его имя в инструкции SELECT. Например:
SELECT author, title, price FROM books;
Чтобы получить доступ к подмножеству строк в таблице, следует указать критерий выбора, который устанавливает конструкция WHERE. Например, чтобы выбрать имеющиеся в наличии недорогие книги о PHP, надо составить запрос:
SELECT * FROM books WHERE price < 200 AND title LIKE '%PHP%' AND quantity != 0;% Соответствует любому количеству символов, даже нулевых
_ Соответствует ровно одному символу
Для того, чтобы строки, извлеченные по запросу, перечислялись в определенном порядке, используется конструкция ORDER BY. Например:
SELECT * FROM books ORDER BY price;
По умолчанию порядок сортировки идет по возрастанию. Изменить порядок сортировки на обратный можно с помощью ключевого слова DESC:
SELECT * FROM books ORDER BY price DESC;
Сортировать можно и по нескольким столбцам. Вместо названий столбцов можно использовать их порядковые номера:
SELECT * FROM books ORDER BY 4, 2, 3;
Для изменения ранее записанных в таблицу значений нужно воспользоваться командой UPDATE. Например, цену всех книг повысили на 10%:
UPDATE books SET price = price * 1.1;
Конструкция WHERE ограничит работу UPDATE определенным строками. Например:
UPDATE books SET price = price * 1.05 WHERE price <= 250;
Для удаления строк из базы данных используется оператор DELETE. Ненужные строки указываются при помощи конструкции WHERE. Например, какие-то книги проданы:
DELETE FROM books WHERE quantity = 0;
Связь PHP с базой данных MySQL
Поработав с phpMyAdmin над созданием базы данных, можно приступить к подключению этой базы данных к внешнему Web-интерфейсу.
Чтобы получить доступ к базе данных из Web, используя PHP, надо сделать следующие основные шаги:
- Подключение к серверу MySQL.
- Выбор базы данных.
- Выполнение запроса к базе данных:
- добавление;
- удаление;
- изменение;
- поиск;
- сортировка.
- Получение результата запроса.
- Отсоединение от базы данных.
Для подключения к серверу базы данных в PHP есть функция mysql_connect( ). Ее аргументы: имя компьютера, имя пользователя и пароль. Эти аргументы можно опустить. По умолчанию имя компьютера = localhost, тогда имя пользователя и пароль не требуется. Если PHP используется в сочетании с сервером Apache, то можно воспользоваться функцией mysql_pconnect(). В этом случае соединение с сервером не исчезает после завершения работы программы или вызова функции mysql_close(). Функции mysql_connect() и mysql_pconnect() возвращают идентификатор подключения, если все прошло успешно. Например:
$link = mysql_pconnect ();
if ( !$link ) die ("Невозможно подключение к MySQL");
После того, как соединение с сервером MySQL установлено, нужно выбрать базу данных. Для этого используется функция mysql_select_db(). Ее аргумент: имя базы данных. Функция возвращает true, если указанная база данных существует и доступ к ней возможен. Например:
$db = "sample";
mysql_select_db ( $db ) or die ("Невозможно открыть $db");
Для добавления, удаления, изменения и выбора данных нужно сконструировать и выполнить запрос SQL. Для этого в языке PHP существует функция mysql_query(). Ее аргумент: строка с запросом. Функция возвращает идентификатор запроса.
Пример 1
<html>
<head>
<title>Добавление записи в таблицу</title>
</head>
<body>
<?php
$db = "sample";
$link = mysql_pconnect ();
if ( !$link )
die ("Невозможно подключение к MySQL");
mysql_select_db ( $db ) or die ("Невозможно открыть $db");
$query = "INSERT INTO books
VALUES ('966-7393-80-1', 'Аллен Вайк',
'PHP. Справочник', '213', '4')";
mysql_query ( $query );
mysql_close ( $link );
?>
</body>
</html>Скопировать в буфер
При каждом выполнении примера 1 в таблицу будет добавляться новая запись, содержащая одни и те же данные. Разумеется имеет смысл добавлять в базу данные, введенные пользователем.
В примере 2.1 приведена HTML-форма для добавления новых книг в базу данных.
Пример 2.1
<html> <head> <title>HTML-форма добавления новых книг</title> </head> <body> <form aсtion="insert_book.php" method="post"> <table> <tr><td>ISBN<td><input name=isbn maxlength=13 size=13> <tr><td>Автор<td><input name=author maxlength=30 size=30> <tr><td>Название<td><input name=title maxlength=60 size=30> <tr><td>Цена<td><input name=price maxlength=7 size=7> <tr><td>Количество<td><input name=quantity maxlength=3 size=3> <tr>td colspan=2><input type=submit value="Ввод"> </table> </form> </body> </html>
Результаты заполнения этой формы передаются в insert_book.php.
Пример 2.2
<html>
<head>
<title>Программа добавления новых книг (файл insert_book.php)</title>
</head>
<body>
<?php
if (!$isbn || !$author || !$title || !$price || !$quantity)
die ("Не все данные введены.<br>
Пожалуйста, вернитесь назад и закончите ввод");
$isbn = trim ( $isbn );
$author = trim ( $author );
$title = trim ( $title ) ;
$isbn = addslashes ( $isbn );
$author = addslashes ( $author );
$title = addslashes ( $title ) ;
$db = "sample";
$link = mysql_pconnect();
if ( !$link ) die ("Невозможно подключение к MySQL");
mysql_select_db ( $db ) or die ("Невозможно открыть $db");
$query = "INSERT INTO books VALUES ('"
.$isbn."', '".$author."', '".$title."', '"
.$price."', '".$quantity."')";
$result = mysql_query ( $query );
if ($result) echo "Книга добавлена в базу данных.";
mysql_close ( $link );
?>
</body>
</html>
В примере 2.2 введенные строковые данные обработаны функцией addslashes(). Эта функция добавляет обратные слеши перед одинарными кавычками ('), двойными кавычками ("), обратным слешем (\) и null-байтом. Дело в том, что по требованиям систаксиса запросов баз данных такие символы дожны заключаться в кавычки.
Для определения количества записей в результате запроса используется функция mysql_num_rows().
Все записи результата запроса можно просмотреть в цикле. Перед этим с помощью функции mysql_fetch_array() для каждой записи получают ассоциативный массив.
В примере 3.1 приведена HTML-форма для поиска определенных книг в базе данных.
Пример 3.1
<html> <head> <title>HTML-форма поиска книг</title> </head> <body> <form aсtion="search_book.php" method="post"> Ищем по:<br> <select name="searchtype" size=3> <option value="author" selected>Автору <option value="title">Названию <option value="isbn">ISBN </select> <br> Что ищем:<br> <input name="searchterm"> <br> <input type=submit value="Поиск"> </form> </body> </html>
Результаты заполнения этой формы передаются в search_book.php.
Пример 3.2
<html>
<head>
<title>Программа поиска книг (файл search_book.php)</title>
</head>
<body>
<?php
trim ( $searchterm );
if (!$searchterm)
die ("Не все данные введены.<br>
Пожалуйста, вернитесь назад и закончите ввод");
$searchterm = addslashes ($searchterm);
$link = mysql_pconnect ();
if ( !$link ) die ("Невозможно подключение к MySQL");
$db = "sample";
mysql_select_db ( $db ) or die ("Невозможно открыть $db");
$query = "SELECT * FROM books WHERE "
.$searchtype." like '%".$searchterm."%'";
$result = mysql_query ( $query );
$n = mysql_num_rows ( $result );
for ( $i=0; $i<$n; $i++ )
{
$row = mysql_fetch_array($result);
echo "<p><b>".($i+1).". $row[title]</b><br>";
echo "Автор: $row[author]<br>";
echo "ISBN: $row[ISBN]<br>";
echo "Цена: $row[price]<br>";
echo "Количество: $row[quantity]</p>";
}
if ( $n == 0 ) echo "Ничего не можем предложить. Извините";
mysql_close ( $link );
?>
</body>
</html>
Итак, как работает архитектура Web-баз данных:
- Web-браузер пользователя выдает HTTP-запрос определенной Web-страницы. Например, пользователь, используя HTML-форму, ищет все книги о PHP. Страница обработки формы называется search_book.php.
- Web-сервер принимает запрос на search_book.php, извлекает этот файл и передает на обработку механизму PHP.
- PHP выполняет соединение с MySQL-сервером и отправляет запрос.
- Сервер принимает запрос к базе данных, обрабатывает его и отправляет результат (список книг) обратно механизму PHP.
- Механизм PHP завершает выполнение сценария, форматирует результат запроса в HTML. После этого результат в виде HTML возвращается Web-серверу.
- Web-сервер пересылает HTML в браузер, и пользователь имеет возможность просмотреть запрошенный список книг.
- Полезные ссылки по MySQL:
- Все функции MySql
- Примеры использования PHP и MySql
- Справочник по MySQL на spravkaweb.ru
Читать дальше: Cookie в PHP
Популярное:
- Генератор Sitemap
- Отправить SMS
- Генератор Robots.txt
- Полезные ссылки
- Чей IP-адрес?
- Чей домен?
- Где телефон?
- Примеры Ajax
- Примеры PHP
- Примеры Javascript
- Примеры HTML, CSS
- Справочник PHP
- GIF-аниматор
- Сайт в ТОП
Содержание:
- HTML
- JavaScript
- PHP + MySQL
- Введение в PHP
- Основы языка
- Использование
массивов - $_server
- Создание функций
- Строки
- Функции работы
со строками - Объектное
программирование - Формы
- Файлы
- MySQL
- Cookie
- htaccess
- Безопасность
- Сессии
- Отправка почты
- Кэширование
- Дата, время
- Математические
функции - Дополнительные
возможности - Регулярные
выражения - Библиотека Curl
- IMAP, POP3, NNTP
- Оптимизация
- Примеры скриптов
- XML + XSLT
- AJAX
- Графика CorelDRAW
- SEO
- Сервисы
- Разное
- Шаблоны сайтов
Новое за неделю
Сейчас на сайте: 489
