- •Лабораторная работа №6
- •6.4. Теоретические сведения
- •6.4.1.Поддержка баз данных в рнр
- •6.4.2. Создание базы данных
- •6.4.3. Соединение с базой данных
- •6.4.4. Выбор базы данных
- •6.4.5. Завершение работы с базой данных
- •6.4.6. Работа с таблицами базы данных
- •6.4.6.1. Создание таблицы бд
- •6.4.6.2. Добавление записей в таблицу
- •6.4.6.3. Вывод данных из бд
- •6.5. Указания по организации самостоятельной работы студентов
- •6.6. Контрольные вопросы
- •Страховая компания Описание предметной области Вы работаете в страховой компании. Вашей задачей является отслеживание финансовой деятельности компании.
- •2. Гостиница Описание предметной области
- •3. Ломбард Описание предметной области
- •4. Реализация готовой продукции Описание предметной области
- •5. Ведение заказов Описание предметной области
- •6. Бюро по трудоустройству Описание предметной области
- •7. Нотариальная контора Описание предметной области
- •8. Фирма по продаже запчастей Описание предметной области
- •9. Курсы по повышению квалификации Описание предметной области
- •10. Определение факультативов для студентов Описание предметной области Вы работаете в высшем учебном заведении и занимаетесь организацией факультативов.
- •11. Распределение учебной нагрузки Описание предметной области
- •12. Распределение дополнительных обязанностей Описание предметной области
- •13. Техническое обслуживание станков Описание предметной области
- •14. Туристическая фирма Описание предметной области
- •Развитие постановки задачи
- •15. Грузовые перевозки Описание предметной области
- •16. Учет телефонных переговоров Описание предметной области
- •17. Учет внутриофисных расходов
- •18. Библиотека Описание предметной области
- •19. Прокат автомобилей Описание предметной области
- •20. Выдача банком кредитов Описание предметной области
- •21. Инвестирование свободных средств Описание предметной области
- •22. Занятость актеров театра Описание предметной области
- •23. Платная поликлиника
- •24. Анализ динамики показателей финансовой отчетности различных предприятий Описание предметной области
- •25. Учет телекомпанией стоимости прошедшей в эфире рекламы Описание предметной области Описание предметной области
- •26. Интернет-магазин исание предметной области
- •Развитие постановки задачи
- •27. Ювелирная мастерская Описание предметной области
- •28. Парикмахерская Описание предметной области
- •29. Химчистка Описание предметной области
- •30. Сдача в аренду торговых площадей Описание предметной области
6.4.6.2. Добавление записей в таблицу
Добавление записей в таблицу также выполняется с помощью запросов. Пример добавления записей в таблицу «bank» приведен ниже.
<html>
<body>
<?php
$db = mysql_connect("localhost","root");
mysql_select_db("client-bank",$db);
$result=mysql_query("INSERT INTO `bank` ( `KodBank` , `NameBank` , `Adress` )
VALUES ('231', 'Аваль', 'г. Харьков, ул. Мира, 11')",$db);
mysql_close($db);
?>
</body>
Рис. 3. Запись в таблицу «bank» добавлена
Аналогично с помощью запросов выполняется удаление и обновление данных в таблице.
6.4.6.3. Вывод данных из бд
Вывод данных из БД осуществляется также с помощью запросов. Далее приведен пример вывода записи из таблицы «bank»
<html>
<body>
<?php
$db = mysql_connect("localhost","root");
mysql_select_db("client-bank",$db);
$result=mysql_query("SELECT * FROM bank",$db);
printf("Код банка: %s<br>\n",mysql_result($result,0,"KodBank"));
printf("Наименование банка: %s<br>\n",mysql_result($result,0,"NameBank"));
printf("Адрес банка: %s<br>\n",mysql_result($result,0,"Adress"));
mysql_close($db);
?>
</body>
</html>
Результат запуска созданного php-файла представлен на рис. 4.
Рис. 4. Вывод данных из БД
Рассмотрим построчно, что происходит в этой программе. Функция mysql_connect() открывает связь с сервером баз данных MySQL. В качестве параметров мы указываем ей имя узла (localhost), на котором находится база данных, имя пользователя (root), под которым мы будем с ней работать, и пароль (данном случае он пустой и потому не указывается).
Имя узла localhost означает, что сервер MySQL находится на той же машине, что и сам Web-сервер с PHP-движком. В принципе ничто не мешает вам (имея права ) обратиться к серверу MySQL, который находится на соседней машине или вообще на другом конце земного шара.
В результате выполнения этой функции получаем некое значение, которое присваиваем переменной $db. Эта переменная называется идентификатором соединения. Соединившись с сервером выбираем базу данных, с которой будем работать ( на одном и том же сервере могут стоять несколько баз данных). Это делается с помощью функции mysql_select_db(). В качестве параметров мы передаем название нужной нам базы данных и идентификатор соединения, полученный нами при выполнении предыдущей команды.
В результате выполнения функции mysql_select_db() мы получаем значение true или false. Если соединение с базой данных произошло успешно – true, если нет – false. Для того, чтобы наша программа работала более интеллектуально, мы можем при желании проанализировать возвращаемое значение и если оно будет false, вывести хорошее информативное сообщение об ошибке.
И наконец, обращаемся к базе данных с запросом, написанным на языке SQL. Для этого служит функция mysql_query(). В качестве первого параметра мы передаем текст запроса, а в качестве второго – идентификатор, полученный от выполнения функции mysql_connect().
Результаты выполнения функции mysql_query() – записи, удовлетворяющие нашему запросу - помещаем в переменную $result.
С помощью функции mysql_result() извлекаем из результатов выполнения нашего запроса (т.е. переменной $result), первый ряд-запись (который имеет порядковый номер 0), и значение определенного поля (по его имени ).
Таким образом, данная программа выводит только одну запись на экран. Следующая программа выводит все записи из таблицы «bank».
<html>
<body>
<?php
$db = mysql_connect("localhost", "root");
mysql_select_db("client-bank",$db);
$result = mysql_query("SELECT * FROM bank",$db);
if($myrow = mysql_fetch_array($result))
{
echo "<table border=1>\n";
echo "<tr><td>Код</td><td>Название</td><td>Адрес</td></tr>\n";
do
{
printf("<tr><td>%s </td><td>%s </td><td>%s</td></tr>\n", $myrow["KodBank"], $myrow["NameBank"],
$myrow["Adress"]);
}
while ($myrow = mysql_fetch_array($result));
echo "</table>\n";
}
else
{
echo "Sorry, no records were found!";
}
?>
</body>
</html>
Результат выполнения данного файла приведен на рис. 5.
Рис. 5. Результат вывода всех данных таблицы «bank»
Цикл while говорит, что до тех пор, пока в переменной $result остается запись для выборки, ее необходимо извлечь с помощью функции mysql_fetch_array и присвоить переменной $myrow. А после этого выполнить код, что расположен внутри фигурных скобок "{}".
Обычно гораздо удобнее сразу присвоить значения всех полей записи элементам индексируемого массива (начиная с индекса 0). Задача решается функцией mysql_fetch_row( ), имеющей следующий синтаксис:
array mysql_fetch_row (int результат)
Функции mysql_fetch_row в качестве параметра подается массив $result. Функция выбирает из него строку, которую мы можем записать в переменную, $myrow и автоматически переходит на следующую строку. Вызвав снова mysql_fetch_row, выберем следующую строку из массива, и так далее до тех пор, пока не достигнем конца массива. В этом случае mysql_fetch_row вернет значение false, которое послужит нам сигналом, что все записи выбраны и можно завершить цикл.
Но в данной программе вместо функции mysql_fetch_row() использовали функцию mysql_fetch_array(). Она работает точно так же, как и mysql_fetch_row() за одним исключением: с помощью этой функции можно обращаться к каждому полю массива не по номеру, а по имени. Например, если раньше для получения имени нам приходилось писать $myrow[1] (1 – второй столбец массива ), то теперь мы можем писать $myrow["KodBank"] ("KodBank"– название столбца в базе данных и в массиве ). Второй вариант естественно гораздо информативнее и удобнее.
Аналогично можно выводить данные запроса с условием. Пример вывода данных из таблицы «bank» с кодом банка равным 123 приведен ниже.
<html>
<body>
<?php
$db = mysql_connect("localhost", "root");
mysql_select_db("client-bank",$db);
$result = mysql_query("SELECT * FROM bank where KodBank='123'",$db);
if($myrow = mysql_fetch_array($result))
{
echo "<table border=1>\n";
echo "<tr><td>Код</td><td>Название</td><td>Адрес</td></tr>\n";
do
{
printf("<tr><td>%s </td><td>%s </td><td>%s</td></tr>\n", $myrow["KodBank"], $myrow["NameBank"],
$myrow["Adress"]);
}
while ($myrow = mysql_fetch_array($result));
echo "</table>\n";
}
else
{
echo "Sorry, no records were found!";
}
?>
</body>
</html>
Рис.6. Результат выполнения запроса
