Доступ к базам данных

Подготовка базы.

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

Запустив монитор mysql и зарегистрировавшись в системе, создадим базу данных books:

mysql> create database books;

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

mysql> use dbname;

где dbname — имя соответствующей базы данных.

Можно и не набирать команду use, но тогда следует указать базу данных при входе систему:

mysql dbname -h hostname -u username -p

В этом примере воспользуемся базой данных books:

mysql> use books;

Для соединения РНР-сценариев с MySQL потребуется настроить пользователя. В этом случае нужно применить принцип наименьших привилегий: зачем права сценариям?

В большинстве случаев сценариям понадобится проводить над строками таблиц только такие операции: SELECT, INSERT, DELETE и UPDATE. Можно поступить следующим образом:

mysql> grant select, insert, delete, update

-> on books.*

-> to bookorama identified by 'bookoramal23' ;

He забывайте о безопасности! Такой пароль, конечно, никуда не годится.

Следующий этап настройки базы данных — создание таблиц. Это делается при помощи SQL-команды CREATE TABLE.

SQL-код создания таблиц запускается следующим образом:

> mysql -h host -u bookorama books -p < books.sql

В данном случае очень удобно использовать переназначение файлов, поскольку предполагается, что до выполнения SQL-код редактируется в любом текстовом редакторе.

Листинг 6.5.books.sql - SQL-код создания таблицы для базы данных books

create table books
( isbn char(13) not null primary key,
author char(30),
title char(60),
price float(4,2)
); 

Прежде чем приняться работать с базой данных, в ней необходимо сохранить какие-нибудь данные. Наиболее приемлемый способ предполагает использование оператора SQL INSERT.

Листинг 6.6.book_insert.sql — SQL-код для заполнения данными таблицу Books

use books;
insert into books values
("0-672-31697-8", "Michael Morgan", "Java 2 for Professional Developers", 34.99) ,
("0-672-31745-1", "Thomas Down", "Installing Debian GNU/Linux", 24.99), 
("0-672-31509-2", "Pruitt, et al.", "Sams Teach Yourself GIMP in 24 Hours", 24.99),
("0-672-31769-9", "Thomas Schenk", "OpenLinux System Administration", 49.99); 

Как работает архитектура Web-баз данных.

Распишем ее по шагам:

У нас имеется база данных MySQL, поэтому можем подготовить код РНР, чтобы выполнялись предыдущие шаги. Начнем с поисковой формы. Это простая HTML-форма. Код для этой формы показан в листинге 6.7.

Листинг 6.7.search.html — поисковая страница для базы данных Book

<html><head><title>Book Catalog Search</title> </head><body>
<hl>Book Catalog Search</hl>
<form action="results.php" method="post"> Choose Search Type:<br> 
<select name="searchtype">
<option value="author">Author
<option value="title">Title
<option value="isbn">ISBN </select> <br>
Enter Search Term:<br> <input name="searchterm" type=text> <br>
<input type=submit value="Search"> </form>
</body> </html>

После того как пользователь нажмет на кнопке Search, вызывается сценарий results.php. Все это представлено в листинге 6.8. Далее мы рассмотрим, что делает упомянутый сценарий и как он работает.

Листинг 6.8.results.php - извлечение результатов запроса и форматирование их

<html><head><title>Book Search Results</title></head> <body>
<hl>Book Search Results</hl> <?
trim($searchterm);
if (!$searchtype || !$searchterm) {
echo "You have not entered search details. Please go back and try again.";
exit; }
$searchtype = addslashes($searchtype); 
$searchterm = addslashes($searchterm);
@$db = mysql_pconnect("localhost", "bookorama", "bookorama");
if (!$db) {
echo "Error: Could not connect to database. Please try again later.";
exit; }
mysql_select_db("books");
$query = "select * from books where ".$searchtype." Like '%".$searchterm."%'"; 
$result = mysql_query($query); 
$num_results = mysql_num_rows($result);
echo "<p>Number of books found: ".$num_results."</p>";
for ($i = 0; $i <$num_results; $i ++) {
$row = mysql_fetch_array($result);
echo "<p><strong>".($i+l).". Title:";
echo htmlspecialchars( stripslashes($row["titie"]));
echo "</strong><br>Author: ";
echo htmlspecialchars (stripslashes($row["author"]));
echo "<br>ISBN:
echo htmlspecialchars (stripslashes($row["isbn"]));
echo "<br>Price: " ;
echo htmlspecialchars (stripslashes($row["price"] ));
echo "</p>"; }
?>
</body> </html>

Основные шаги выполнения запросов к базе данных через Web. В любом сценарии, который обеспечивает доступ к базе данных из Web, имеется несколько базовых шагов:

То же самое делает и сценарий results.php, и сейчас мы исследуем каждый из этих этапов.

Hosted by uCoz