Основы web-программирования: Работа с базой данных MySQL в языке PHP

Все приведенные в лекции запросы вы можете опробовать на учебной базе данных, размещенной по адресу mysql.tu2.ru. Информация для входа:

Пользователь: learnsql8

Пароль: 42pozyw959

Подробнее о работе с учебной базой данных читайте в статье Как правильно работать с учебной базой данных

Ключевые слова: программирование, язык программирования, базы данных, MySQL, SQL, запрос, таблица, лекции по программированию, переменная, объект, PHP, SELECT, INSERT, UPDATE, DELETE, mysql_connect, mysql_pconnect, mysql_select_db, mysql_query, mysql_fetch_object

Автор: Приходько Максим Александрович

Для понимания принципа работы с базой данных в языке PHP требуется знание нескольких базовых концепций web-программирования и баз данных. И первые из них: запрос и курсор. Как мы уже говорили в лекции Базы данных: Моделируем работу blog'а - таблица пользователей, основные операции по манипуляции данными осуществляются с помощью всего 4 (четырех) команд языка SQL - INSERT, DELETE, UPDATE и SELECT. И если первые три из них "просто отрабатывают", не возвращая в результате своей работы никаких сведений из базы данных, то результатом работы корректно составленного оператора SELECT (т. е. не вызывающего при его выполнении ошибку) является временная таблица, которую обычно называют результат выборки или просто выборка.

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

Строка, с которой в данный момент возможна работа, определяется положением курсора - указателя текущей строки выборки. В самом начале сразу после выполнения запроса курсор указывает на "мнимую" строчку перед первой строкой выборки:

image

Таким образом, непосредственное обращение к выбранным данным возможно только после выполнения специальной операции перехода к следующей строке, с помощью которой и осуществляется "проход" по выбранным данным:

image

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

image

В приведенном примере выборка содержит 10 строк. После выполнения 10 операций перехода к следующей строке курсор окажется на последней - 10-й строке:

image

Тогда одиннадцатое (11-е) выполнение команды перехода к следующей строке приведет к "установке" курсора на "мнимую" строчку после последней строки выборки, в результате чего сервер базы данных сообщит приложению о том, что результаты выборки исчерпаны, а их перебор можно завершать:

image

Возможность определения конца выборки (так же как и файла, например) позволяет обрабатывать выборку с применением бесконечного цикла, так как использование конечного цикла в общем случае невозможно, а для возможности использования конечного цикла необходимо иметь механизмы для определения точного числа строк выборки.

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

Две другие ключевые концепции относятся не только и не столько непосредственно к языку программирования PHP, сколько к прогрммированию вообще: переменная и объект. Мы не будем подробно останавливаться на них, скажем лишь несколько общих слов.

Переменная - это "поименованная" область памяти, хранящая некоторое значение. "Поименованная" означает, что у нее есть имя, используя которое и осуществляется доступ к значению и манипулирование им. Сделано это для удобства, так как использовать шестнадцатеричные адреса памяти, мягко говоря, неудобно.

В языке PHP присутствует яркая специфика работы с переменными - их не требуется определять и у них нет формально выраженного типа данных. Это означает, что "ввести" переменную в программу можно в любом ее месте, при этом не требуется указывать тип данных значения, которое предполагается хранить в переменной, а само "определение" переменной заключается в указании символа $ перед ее именем:

$x = 5
Объект в свою очередь можно назвать следующей эволюцией понятия переменная. Объект объединяет в единое целое набор переменных, функций и описаний реакций объекта "на внешние раздражители".

При работе с базой данных MySQL в языке программирования PHP используется ряд спецальных объектов. В настоящий момент достаточно сказать, что доступ к переменной или функции объекта осуществляется указанием имени объекта, символов -> и имени переменной (функции):

$object->id
Непосредственное обращение к базе данных в любом языке программирования выглядит примерно одинаково (с логической точки зрения) и осуществляется последовательным выполнением следующих операций:
  • подключение к серверу базы данных (СУБД)
  • подключение к конкретной базе данных
  • выполнение запроса
  • обработка результатов запроса
Для подключения к серверу базы данных MySQL в языке PHP используется функция mysql_connect или mysql_pconnect (эта функция устанавливает постоянное соединение):
$connection = @mysql_pconnect("localhost", "имя_пользователя_СУБД", "пароль_СУБД");

В качестве параметров, как видно из примера, передаются имя хоста (обычно localhost), имя пользователя для подключения к серверу базы данных, пароль. Результатом работы функции является объект указатель на соединение с MySQL или FALSE (в случае ошибки). В дальнейшем этот объект будет использован для подключения к конкретной базе данных.

Подключения к конкретной базе данных осуществляется с помощью функции mysql_select_db:

@mysql_select_db("имя_базы_данных", $connection)
В качестве параметров функции передаются имя базы данных и ранее полученный объект подключение к MySQL.

Выполнение запроса осуществляется с помощью функции mysql_query:

 $query = @mysql_query($sql_insert);
В качестве параметра этой функции передается только текст запроса (на языке SQL). Запрос, соответственно, выполняется на той базе данных, которая выбрана активной на предыдущем этапе. Только для запроса select функция возвращает объект указатель на результат запроса в случае успешного выполнения или FALSE в случае ошибки. Для всех остальных запросов функция возвращает TRUE в случае успеха или FALSE в случае ошибки.

Таким образом, обработка результатов запроса необходима только в случае запроса select. Для этого используется функция перехода к следующей строке mysql_fetch_object, которая возвращает объект, переменные которого соответствуют столбцам строки, в случае успеха или FALSE в случае ошибки. За счет этого становится возможным вызов функции в бесконечном цикле (для обработки всех строк выборки):

while($object = @mysql_fetch_object($query))

{

# команды для обработки строки

}

В нашем примере доступ к столбцу id текущей строки осуществляется с использованием оператора ->:
$object->id
А в целом работа с базой данных осуществляется следующим образом:
<?php

$connection = @mysql_pconnect("localhost", "имя_пользователя_СУБД", "пароль_СУБД");

if(!$connection)

echo "Ошибка подключения к серверу базы данных!<br />";

else

echo "Подключение к серверу базы данных установлено<br />";

if(!@mysql_select_db("имя_базы_данных", $connection))

echo "Ошибка подключения к базе данных!<br />";

else

echo "Подключение к базе данных установлено<br />";

unset($query);

$sql_select = "select * from members ";

$sql_insert = "insert into members (id, username, signature) values('', 'temp_user_000', 'temp_user_000') ";

if($connection)

{

$query = @mysql_query($sql_insert);

if(!query)

echo "Ошибка выполнения запроса!<br />";

else

echo "Запрос успешно выполнен<br />";

}

# фрагмент кода для обработки результатов выполнения команды select

# не требуется для команд insert, update, delete

while($object = @mysql_fetch_object($query))

{

echo $object->id."<br />";

}

?>

Уважаемые web-разработчики

Вы можете свободно использовать данный скрипт (исходный файл можно скачать ниже). Убедительная просьба: оставьте в исходном файле комментарии, указывающие авторство. При перепечатке кодов или фрагментов статьи, пожалуйста, указывайте ссылку на оригинал статьи: http://www.argusm.com/article.php?id=179. В случае возникновения вопросов или комментариев к описанному скрипту свяжитесь с автором, воспользовавшись одним из Контактов.

Файлы для скачивания

Все файлы
1 файла

Скрипт на языке PHP для выполнения запроса на базе данных MySQL

 

Скрипт на языке PHP для выполнения запроса на базе данных MySQL

Скачать! (n/a)

Загружен: 08.06.2008
Скачан: 484
Последний раз: 18.10.2011

Адаптивное тестирование - быстрая и точная оценка персонала
 

Другие статьи в рубрике