Структура сервера веб
Использование СУБД при разработке сайта
Достоинства:
- возможность хранения структурированной информации;
- решение проблемы совместного доступа;
- гибкость и расширяемость приложения;
- высокая скорость.
Недостатки:
- более высокие требования к платформе;
- необходимо настраивать СУБД;
- необходимо знать принципы работы с СУБД, язык SQL.
Популярные СУБД для веб-приложений:
- MySQL (MariaDB)
- PostgreSQL
- различные «большие» СУБД (Microsoft SQL Server, Oracle Database, DB2 и др.)
Основы MySQL
Простая, надежная и быстрая СУБД для малых и средних приложений. Работает на большинстве платформ. Имеет свободную и коммерческую лицензии.
Для работы с СУБД к ней надо подключиться и выбрать базу данных. По завершении работы — отключиться от СУБД. Все операции с СУБД производятся при помощи языка SQL.
c:\mysql.exe -u root -p mysql> USE php_mysql; Database changed mysql> SELECT id, name, region, residents, founded FROM city; +----+-----------+-----------------------+-----------+---------+ | id | name | region | residents | founded | +----+-----------+-----------------------+-----------+---------+ | 1 | Волгоград | Волгоградская область | 1018790 | 1589 | | 2 | Саратов | Саратовская область | 839755 | 1590 | | 3 | Астрахань | Астраханская область | 527345 | 1558 | | 4 | Элиста | Республика Калмыкия | 104238 | 1865 | | 5 | Тамбов | Тамбовская область | 281834 | 1636 | +----+-----------+-----------------------+-----------+---------+ 5 rows in set (0.00 sec) mysql> SELECT id, name, region, residents, founded FROM city WHERE id=1; +----+-----------+-----------------------+-----------+---------+ | id | name | region | residents | founded | +----+-----------+-----------------------+-----------+---------+ | 1 | Волгоград | Волгоградская область | 1018790 | 1589 | +----+-----------+-----------------------+-----------+---------+ 1 row in set (0.00 sec) mysql> INSERT INTO city SET name='Ростов', region='Ростовская область'; Query OK, 1 row affected, 5 warnings (0.00 sec) mysql> SELECT id, name, region, residents, founded FROM city; +----+-----------+-----------------------+-----------+---------+ | id | name | region | residents | founded | +----+-----------+-----------------------+-----------+---------+ | 1 | Волгоград | Волгоградская область | 1018790 | 1589 | | 2 | Саратов | Саратовская область | 839755 | 1590 | | 3 | Астрахань | Астраханская область | 527345 | 1558 | | 4 | Элиста | Республика Калмыкия | 104238 | 1865 | | 5 | Тамбов | Тамбовская область | 281834 | 1636 | | 6 | Ростов | Ростовская область | 0 | 0 | +----+-----------+-----------------------+-----------+---------+ 6 rows in set (0.00 sec) mysql> UPDATE city SET residents=1103733 WHERE id=6; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> SELECT id, name, region, residents, founded FROM city; +----+-----------+-----------------------+-----------+---------+ | id | name | region | residents | founded | +----+-----------+-----------------------+-----------+---------+ | 1 | Волгоград | Волгоградская область | 1018790 | 1589 | | 2 | Саратов | Саратовская область | 839755 | 1590 | | 3 | Астрахань | Астраханская область | 527345 | 1558 | | 4 | Элиста | Республика Калмыкия | 104238 | 1865 | | 5 | Тамбов | Тамбовская область | 281834 | 1636 | | 6 | Ростов | Ростовская область | 1103733 | 0 | +----+-----------+-----------------------+-----------+---------+ 6 rows in set (0.00 sec) mysql> DELETE FROM city WHERE id=6; Query OK, 1 row affected (0.00 sec) mysql> SELECT id, name, region, residents, founded FROM city; +----+-----------+-----------------------+-----------+---------+ | id | name | region | residents | founded | +----+-----------+-----------------------+-----------+---------+ | 1 | Волгоград | Волгоградская область | 1018790 | 1589 | | 2 | Саратов | Саратовская область | 839755 | 1590 | | 3 | Астрахань | Астраханская область | 527345 | 1558 | | 4 | Элиста | Республика Калмыкия | 104238 | 1865 | | 5 | Тамбов | Тамбовская область | 281834 | 1636 | +----+-----------+-----------------------+-----------+---------+ 5 rows in set (0.00 sec) mysql> QUIT;
Работа с MySQL из PHP
$conn = mysql_connect("localhost","php_mysql","php_mysql_pwd") or die("Невозможно установить соединение: ". mysql_error()); mysql_select_db("php_mysql"); mysql_query("SET NAMES utf8 COLLATE utf8_general_ci"); $sql = "SELECT * FROM `city`"; $result = mysql_query($sql, $conn) or die(); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { echo $row["id"] . " " .$row["name"] . " " . $row["region"]; } $sql = "SELECT * FROM `city` WHERE id = " . $id; $result = mysql_query($sql, $conn) or die(); $row = mysql_fetch_array($result, MYSQL_ASSOC); echo $row["id"] . " " .$row["name"] . " " . $row["region"]; $sql = "INSERT INTO city SET name='$name', region='$region'"; $result = mysql_query($sql, $conn) or die(); if ($result) { echo "Информация добавлена"; } mysql_close($conn);
Демонстрационный пример
http://newedu.fizmat.vspu.ru/doc/groups/162/481/denwer-iio-wp.zip
Контрольная работа по предыдущей лекции
Вопрос: Для чего применяются суперглобальные массивы PHP?
Алексей Н. Сергеев