Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Связь PHP с базой данных MySQL

Поиск

Поработав с phpMyAdmin над созданием базы данных, можно приступить к подключению этой базы данных к внешнему Web-интерфейсу.

Чтобы получить доступ к базе данных из Web, используя PHP, надо сделать следующие основные шаги:

· Подключение к серверу MySQL.

· Выбор базы данных.

· Выполнение запроса к базе данных:

o добавление;

o удаление;

o изменение;

o поиск;

o сортировка.

· Получение результата запроса.

· Отсоединение от базы данных.

Для подключения к серверу базы данных в 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(). Ее аргумент: строка с запросом. Функция возвращает идентификатор запроса.

Пример 8.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>

 

При каждом выполнении примера 8.1 в таблицу будет добавляться новая запись, содержащая одни и те же данные. Разумеется имеет смысл добавлять в базу данные, введенные пользователем.

В примере 2.1 приведена HTML-форма для добавления новых книг в базу данных.

Пример 8.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.

Пример 8.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

$searchterm = 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>

Альтернативный вариант

<html>

<head>

<title>Программа поиска книг (файл search_book.php)</title>

</head>

<body>

<?

$searchterm=trim ($_POST['searchterm']);

if (!$searchterm)

die ("Не все данные введены.<br>Пожалуйста, вернитесь назад и закончите ввод");

$searchterm = addslashes ($searchterm);

mysql_connect() or die ("Невозможно подключение к MySQL");

mysql_select_db ("sample") or die ("Невозможно открыть БД");

$result = mysql_query ("SELECT * FROM books WHERE ".$_POST['searchtype']." like '%".$searchterm."%'");

$i=1;

while($row = mysql_fetch_array($result))

{

echo "<p><b>".($i++). $row['title']."</b><br>";

echo "Автор: ".$row['author']."<br>";

echo "ISBN: ".$row['ISBN']."<br>";

echo "Цена: ".$row['price']."<br>";

echo "Количество: ".$row['quantity']."</p>";

}

if ($i == 1) echo "Ничего не можем предложить. Извините";

mysql_close();

?>

</body>

</html>

 



Поделиться:


Последнее изменение этой страницы: 2016-12-28; просмотров: 373; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.227.209.214 (0.009 с.)