Опубликован: 08.05.2007 | Доступ: свободный | Студентов: 12880 / 3014 | Оценка: 4.13 / 3.77 | Длительность: 12:58:00
Лекция 10:

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

< Лекция 9 || Лекция 10: 12 || Лекция 11 >
Аннотация: Система PHP предоставляет поддержку для MySQL с помощью набора функций, которые можно использовать для манипуляции данными MySQL. База данных MySQL стала самой популярной в мире базой данных с открытым исходным кодом в связи с ее высокой производительностью, надежностью и легкостью использования

Доступ к MySQL

База данных MySQL® стала самой популярной в мире базой данных с открытым исходным кодом — благодаря ее высокой производительности, надежности и легкости использования. Существует более 6 миллионов установок этой базы данных, начиная от больших корпораций и до специализированных встроенных приложений.


Система PHP предоставляет поддержку для MySQL с помощью набора функций, которые можно использовать для манипуляции данными MySQL. Задача этого учебника состоит в том, чтобы познакомить с этими функциями, используемыми обычно в ориентированных на данные приложениях PHP для извлечения, обновления, добавления и удаления данных.

Используемые обычно функции PHP для MySQL описаны ниже.

mysql_connect(имя сервера MySQL,имя пользователя,пароль) – открывает соединение с сервером MySQL.

mysql_select_db(имя базы данных,идентификатор_соединения) – выбирает базу данных, расположенную на сервере MySQL. Параметр "имя базы данных" относится к активной базе данных на сервере MySQL, который был открыт с помощью функции mysql_connect. "Идентификатор_соединения" является ссылкой на текущее соединение с MySQL.

mysql_query(запрос sql) – посылает запрос активной в данный момент базе данных.

mysql_fetch_array(resourse result) – возвращает массив, который соответствует извлеченной строке, и перемещает внутренний указатель данных вперед.

mysql_affected_rows(resourse result) – определяет число строк, затронутых предыдущей операцией SQL.

mysql_close(link_identifier) – закрывает соединение MySQL.

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

При работе с сервером MySQL полезно также использовать инструменты управления с графическим интерфейсом, которые обеспечивают более легкий интерфейс использования данных. Популярными инструментами являются: SQLyog (доступный на http://www.webyog.com) и MySQL Administrator (доступный на http://www.mysql.com/products/tools/).

Добавление записей

С помощью рассмотренных в предыдущем разделе функций MySQL и языка SQL можно добавлять записи в таблицу базы данных. Записи добавляются с помощью формы, предоставляющей области для ввода информации. Нажатие кнопки вызывает затем сценарий PHP для записи новой информации в таблицу с помощью команды SQL INSERT.

Типичная форма ввода для добавления новой записи в таблицу Survey показана ниже.


Поля формы именованы соответствующим образом:

Name — 'Name', Email — 'Email', Web Connection — 'Connection', 
Residence (City/ST/Country) — 'Residence', Age — 'Age', Gender — 'Gender', 
Comments — 'Comments'.

Прежде чем подробно рассматривать код, будет полезно посмотреть на синтаксис оператора SQL INSERT:

INSERT INTO TableName (FieldName1 [,FieldName2]...) VALUES (Value1 [,Value2]...)

Более подробное рассмотрение оператора INSERT дано в приложении.

Следующий код используется для обработки данных формы VisitorSurvey.php:

VisitorSurvey.php

<?php

if ($_POST[submit] == "Submit") 
{

//Получение данных формы и присвоение скалярным переменным 

$Name = $_POST[Name];
$Email = $_POST[Email];
$Connection = $_POST[Connection];
$Residence = $_POST[Residence];
$Age = $_POST[Age];
$Gender = $_POST[Gender];
$Comments = $_POST[Comments];

//Установление соединения с базой данных 

$conn = mysql_connect('localhost','root','xyxyxy');

//Выбор базы данных MySQL 

$db = mysql_select_db('Membership', $conn);

//Оператор SQL 

$sql = "INSERT INTO Survey " . 
	"(Name,Email,Connection,Residence,Age,Gender,Comments) VALUES ('$Name', '$Email', '$Connection', 		 
		'$Residence', '$Age', '$Gender', '$Comments')";
	
//Выполнение оператора SQL и сохранение результатов в множестве записей 
	
$rs = mysql_query($sql,$conn);

mysql_close($conn);

}

?>
Пример 10.1.

После нажатия кнопки отправки Submit создается суперглобальный массив $_POST, содержащий значения из формы. Значения массива присваиваются скалярным переменным. Это упрощает кодирование оператора SQL. Затем выполняется оператор mysql_connect(). Этот оператор требует три параметра – имя хоста сервера MySQL, имя пользователя, и пароль. Здесь для соединения с базой данных MySQL используется строка соединения без DSN. Ссылка на соединение хранится в переменной $conn. Это пример ссылочной переменной PHP. В отличие от скалярных переменных и массивов, ссылочные переменные не применяются непосредственно в программе, но часто используются как параметры для других функций. После соединения с сервером базы данных MySQL следующий шаг состоит в выборе базы данных. Так как экземпляр сервера MySQL может содержать большое число баз данных, то задействуется функция mysql_select_db для выбора одной из них для использования в приложении. Эта функция требует два параметра – имя базы данных и ссылку на соединение MySQL. Вслед за выбором базы данных формируется оператор SQL INSERT и присваивается переменной $sql. Затем функция mysql_query() выполняет оператор SQL, создающий множество записей (множество записей базы данных). Это множество записей присваивается переменной $rs, еще одной ссылочной переменной PHP. Отметим, что функция mysql_query() требует два параметра — $sql (ссылка на текущий оператор SQL) и $conn (ссылка на текущее соединение с базой данных). Наконец, вызывается функция mysql_close() для закрытия текущего соединения с базой данных. Для таких приложений обычно желательно выполнять проверку данных, прежде чем заносить данные в таблицу базы данных. Это необходимо делать перед установлением соединения с базой данных с помощью методов, рассмотренных в "Базовая обработка форм" .

В случае ошибки кодирования данные не заносятся в таблицу базы данных, а PHP выведет предупреждение или сообщение об ошибке. В такой ситуации полезно подавить эти критические сообщения, добавить код для проверки ошибок вручную и сгенерировать более понятный для пользователя вывод. Это можно делать сразу после оператора mysql_query(), проверяя статус вновь созданного множества записей — $rs.

Предположим, что в предыдущем коде функция mysql_query() содержит вместо $sql параметр $sqlString. В этом случае PHP немедленно прекратит выполнение страницы и выведет сообщение об ошибке.

Вывод сообщения об ошибке PHP можно подавить с помощью оператора управления ошибками "@". При подавленном сообщении об ошибке можно добавить код для создания более понятного пользователю сообщения. Такой подход показан ниже:

VisitorSurvey.php

<?php

if ($_POST[submit] == "Submit") 
{

//Получение данных формы и присвоение скалярным переменным 

$Name = $_POST[Name];
$Email = $_POST[Email];
$Connection = $_POST[Connection];
$Residence = $_POST[Residence];
$Age = $_POST[Age];
$Gender = $_POST[Gender];
$Comments = $_POST[Comments];

//Установление соединения с базой данных 

$conn = @mysql_connect('localhost','root','xyxyxy');

//Выбор базы данных MySQL 

$db = @mysql_select_db('Membership', $conn);

//Оператор SQL 

$sqlstring = "INSERT INTO Survey " . 
	"(Name,Email,Connection,Residence,Age,Gender,Comments) VALUES ('$Name', '$Email', '$Connection', 		 
		'$Residence', '$Age', '$Gender', '$Comments')";
	
//Выполнение оператора SQL и сохранение результатов в виде множества записей 
	
$rs = @mysql_query($sqlstring,$conn);

if (!$rs)
{

echo "Произошла ошибка. Попробуйте еще раз.";

}

else

{

echo "Запись была успешно добавлена.";

}

mysql_close($conn);

}

?>
Пример 10.2.

Вслед за функцией mysql_query() используется оператор if для проверки статуса множества записей $rs. Если множество записей успешно создается, выводится сообщение "Запись была успешно добавлена". Если возникает проблема, выводится сообщение "Произошла ошибка. Попробуйте еще раз."

< Лекция 9 || Лекция 10: 12 || Лекция 11 >
Максим Матросов
Максим Матросов
Наталья Джабасова
Наталья Джабасова