| Раздел: PHP, MySQL, веб-программирование | Автор: fox++ |
| E-mail: |
Www: http://foxweb.net.ru |
| Просмотров: 4118 | Дата: 21.12.2005 |
(Будем считать, что вы уже прочитали статью "Работа с MySQL в PHP: с чего начать?" и готовы к решению более сложных задач.)
Всё больше интерактивных сайтов требуют отображения динамической информации на основе данных, полученных от пользователя. Например, покупателю необходимо иметь полный отчёт по своим покупкам на в интерне-магазине. В этом случае на сайте должны хранить два типа данных, доступных для покупателя - отчёт по заходам в магазин и отчёт по купленным товарам. Эти данные можно хранить двумя способами - в обычных тесктовых файлах и в базе данных.
Текстовые файлы применяются для хранения информации всё реже и реже, и на это есть три главных недостатка:
Альтернатива, которая по моему мнению, является единственным применимым методом - это базы данных. Одна из наиболее популярных СУБД, используемых в интернете - это MySQL. Данные, сохранённые в БД легко индексируются, и управляются и хранятся очень эффективно. Кроме того, большинство СУБД предоставляют администратору расширенные средства управления базами данных, например такие как утилиты архивирования, восстановления, контроля и обслуживания.
Веб-сайты, написанные с использованием PHP довольно легко объединяются с MySQL. Это возможно благодаря тому, что PHP содержит стандартную библиотеку функций для работы с MySQL. PHP также может работать с MySQL посредство стандартного интерфейса ODBC для MySQL (существует драйвер MySQL ODBC), но гораздо эффективнее работа без лишних "прослоек" через стандартный модуль.
Остальная часть этой статьи является руководством о том, как:
Прежде, чем написанный вами скрипт, будет запрашивать, добавлять или обновлять информацию в БД, он должен выполнить соединение с сервером БД, чтобы все эти действия стали доступными.
Функции mysql_connect() и mysql_select_db() как раз предназначены для этой цели. В аргументах первой функции укажите по порядку: имя сервера MySQL, логин БД и пароль БД. После выполнения соединения необходимо выбрать базу данных, с которой мы будем работать.
Следующие две строки кода демонстрируют соединение с сервером и выбор БД:
@mysql_connect("[servername]", "[username]", "[password]") or die("Cannot connect to DB!");
@mysql_select_db("[databasename]") or die("Cannot select DB!");
Оператор @ был использован для того, чтобы подавить стандартные сообщения о возможных ошибках функций mysql_connect() и mysql_select_db(). Вместо них в случае ошибки функция die() остановит выполнение скрипта и выведет произвольное сообщение. Применение операторв @ и функции die() необязательно, но считается хорошим тоном, а остановка работы скрипта не позволит злоумышенникам подсмотреть служебную информацию в сообщения об ошибках.
Как только соединение и выбор БД будут выполнены, PHP-скрипт может выполнять операции над данными из БД посредством стандартных SQL-запросов. Функция mysql_query() используется для выполнения запросов к БД. В следующем примере PHP-скрипт выполняет запрос к таблице "tbl_login" для того, чтобы определить, если в этой таблице запись "пользователь/пароль" (для проверки подлинности пользователя).
Примечание:
Предполагается, что таблица "tbl_login" содержит три поля - login (тип VARCHAR - имя пользователя), password (тип VARCHAR - пароль), last_logged_in (тип DATETIME - дата последнего входа).
<?php
// переменные $username и $passwd должны быть переданы из формы
// методом POST. для примера запишем их прямо здесь.
$username = "john";
$passwd = "mypassword";
// генерируем SQL-запрос, который выберет записи с заданными значениями $username и $passwd.
$sql = "SELECT * FROM tbl_login WHERE login = '".$username."' AND password = '".$passwd."'"; // SQL-запрос выполняется для текущей БД.
// результат выполнения записывается в переменную $r.
$r = mysql_query($sql);
// после выполнения mysql_query() перменная $r будет содержать полученные данные
if (!$r) {
$err = mysql_error();
print $err;
exit();
}
// эта часть скрипта проверяет наличие в таблице записи с заданными
// значениями $username и $passwd, функция mysql_affected_rows()
// mysql_affected_rows() возвращает количество записей, возвращённых последним запросом
// соответственно, если mysql_affected_rows()==0, то такой записи нет.
if (mysql_affected_rows() == 0) {
print "Логин/пароль не верны. Попробуйте ещё раз.";
}
else {
// если запись найдена, то покажем пользователю время последнего входа $last
$row = mysql_fetch_array($r);
$last = $row["last_logged_in"];
print "Вы успешно авторизовались. Ваш послений вход был ".$last.".";
}
?>
Этот пример демонстрирует работу запроса SELECT языка SQL. Точно таким же способом выполняются другие виды запросов, например UPDATE, INSERT, DELETE и другие, используя функции mysql_query() and mysql_affected_rows().
This PHP scripting article is written by John L. John L is the Webmaster of The Ultimate BMW Blog! (http://www.bimmercenter.com).
The Ultimate BMW Blog!
">
Written by: John L
Оригинал руководства: http://www.beginnersphp.co.uk/MySQL-Database-Handling-in-PHP.php. Перевод: fox++.