РАЗРАБОТКА ЭЛЕКТРОННОГО ПОРТАЛА Тема 1. Продолжение Работа с БД на сервере MYSQL

advertisement
РАЗРАБОТКА ЭЛЕКТРОННОГО ПОРТАЛА
Тема 1. Продолжение
Работа с БД на сервере MYSQL
из PHP-скриптов
Цель темы – освоить основные методы доступа к
БД из скриптов, написанных на языке PHP
1.Подключение к БД
2.Формирование запроса
3.Исполнение и интерпретация запроса
1
Общие принципы
Существует множество библиотек функций
доступа
Типичные действия для доступа к БД
1. Подсоединение к серверу
2. Выбор базы данных
3. Выполнение сформированного SQL-запроса
для данной БД
4. Анализ
•Select
•Insert
полученных
результатов
•Update
5. Завершение соединения
Подсоединение к серверу
Функция mysql_connect
• открывает соединение с MySQL сервером
• возвращает
целое число –сервера’,
при корректном
mysql_connect(‘имя
подсоединении
к серверу номер
‘имя пользователя',‘пароль')
соединения или 0 (false) при ошибке.
$db= mysql_connect('localhost','root','');
Пример
<?
echo "Подсоединяемся к серверу <br>";
// пример соединения с сервером MySQL
// для анализа корректности обращения введем
В случае неудачного подключения
// скалярную
переменную $db,
Вы можете получить сообщение типа Warning:
// в которой будет храниться идентификатор связи
$db=mysql_connect('localhost','root','');
MySQL Connection Failed: Unknown
MySQL Server Hostсоединения
'localhos' (2) $db <br>\n";
echo "Идентификатор
in d:/apache/htdocs/db_test/spisok.php3 on line 6
?>
Устойчивое соединение
Обеспечивает функция mysql_pconnect()
Соединение с сервером SQL не закроется, когда
закончится выполнение сценария.
Следует применять в тех приложениях PHP, в
которых за короткий промежуток времени
производжится много соединений с сервером MySQL
с использованием одного и того же пользователя. В
этом случае функция mysql_pconnect() устраняет
накладные расходы, связанные с созданием и
открытием соединения.
Следует помнить, что функция mysql_pconnect()
работает только в конфигурации PHP как модуля
web-сервера.
Завершение соединения
Применением функции mysql_close()
Автоматически при завершении работы скрипта,
если было открыто простое соединении с
сервером
Выбор конкретной базы данных для
дальнейшей работы
Операция выполняется функцией mysql_select_db()
int mysql_select_db(string database_name, int
[link_identifier] );
Обязательным параметром является имя базы
данных,
оно передается
как символьная
Необязательным
параметром
являетсястрока.
идентификатор соединения link_identifier,
который получен в результате корректного
выполнения функции mysql_connect().
Анализ ошибок
Применение функции mysql_error() обязательно
после любой операции с базой данных.
Анализ выполнения операции
Отправление запроса к БД
mysql_query -- Отправляет SQL-запрос серверу
MySQL
Запрос формируется в виде символьной строки и
может содержать стандартный оператор языка SQL.
SQL-запрос всегда записывается в двойных
кавычках!
Результат работы функции зависит от типа запроса
• для DML – true или false
• для DQL (Select) – ссылку на ассоциативный
массив, содержащий виртуальный набор данных
Анализ результатов запросов SELECT
Просмотр результата запроса осуществляется с
использованием одной из функций:
mysql_fetch_array($result)
mysql_fetch_row($result)
mysql_fetch_object($result)
Для определения количества строк в
полученном результате служит функция
mysql_num_rows($result)
ВИД РЕЗУЛЬТАТА ЗАПРОСА
Результат запроса – это двумерная таблица.
Каждая из приведенных функций позволяет получить
значения одной строки этой таблицы.
Для расшифровки результата мы должны
организовать цикл по всем строкам результирующей
таблицы
13
СРАВНЕНИЕ ФУНКЦИЙ
Функция mysql_fetch_row($result) – работает максимально
быстро, потому что она при расшифровке строки использует
числовые индексы массива строки
$row= mysql_fetch_row($result);
Echo $row[0],$row[1],$row[2], $row[3];
14
Пример
ПРИМЕР
$sql= “Select * from books”;
$result= mysql_query($sql);
// количество строк в результате
$n= mysql_num_rows($result);
For($i=0;$i<$n;$i++)
{
// переход на текущую строку
$row= mysql_fetch_row($result);
// вывод значений 4-х столбцов
Echo ‘<br>’.$row[0],$row[1],$row[2], $row[3];
}
16
ЦИКЛ WHILE
While($row= mysql_fetch_row($result))
{
Echo ‘<br>’.$row[0],$row[1],$row[2], $row[3];
}
17
ФУНКЦИЯ MYSQL_FETCH_ARRAY($RESULT)
Функция mysql_fetch_array($result) позволяет
обращаться по имени столбца при
расшифровке строки результата
While($row= mysql_fetch_array($result))
{
Echo
‘<br>’.$row[‘ISBN’],$row[‘TITL’],$row[‘YEARIZD’],
$row[‘PAGES’];
}
Имена полей регистрозависимы
18
Результат SELECT
Столбцы результата
Строки
результата
Ассоциативный
массив
Значение1_1
Значение2_1
Значение3_1
Array(array1(),array2(),…)
Array1 –Значение2_2
первая строка
Значение1_2
Значение3_2
Array2 – вторая строка
…
Значение1_3
Значение2_3
Значение3_3
Ключами в строках являются
имена столбцов таблицы
Назначение функций просмотра результатов
Оператор $row=mysql_fetch_array($result))
Или $row=mysql_fetch_row($result))
переустанавливает курсор на очередную строку
ассоциативного массива
MYSQL_FETCH_OBJECT($RESULT)
mysql_fetch_object($result) – формирует строку результата
как объект.
В этом случае к свойствам объекта требуется обращаться с
использованием ссылки на свойство:
$row->ISBN - значение поля ISBN.
While($row=mysql_fetch_object($result))
{
Echo '<br>'.$row->ISBN.'-'.$row->TITL.'-'.$row->YEARIZD.''.$row->PAGES;
}
22
Запросы DML
Содержимое таблицы BOOKS в БД «Библиотека»
ISBN
Titl
Yearizd
Pages
0001
Архитектура
компьютеров
Вычислительные
системы и сети
Основы теории баз
данных
2006
230
2007
300
2007
250
0002
0003
While($row=
mysql_fetch_row($result))
While($row=
mysql_fetch_array($result))
$sql=
“Select
* from books”;
{{
$result=
mysql_query($sql);
Echo
‘<br>’.$row[0],$row[1],$row[2],
$row[3];
Echo
‘<br>’.$row[‘ISBN’],$row[‘TITL’],$row[‘YEARIZD’],
//} количество строк в результате
$row[‘PAGES’];
$n=
mysql_num_rows($result);
}
For($i=0;$i<$n;$i++)
{
// переход на текущую строку
$row= mysql_fetch_row($result);
// вывод значений 4-х столбцов
Echo ‘<br>’.$row[0],$row[1],$row[2], $row[3];
}
24
ЗАВЕРШЕНИЕ ЗАПРОСА SELECT
mysql_free_result($result)
Освобождает память!
25
ОСОБЕННОСТИ СИНТАКСИСА SELECT
Select <список вывода> LIMIT (n,m)
 From <список таблиц>
 Where <условия фильтрациисоединения>
 Параметры LIMIT –
 - если оба, то n – номер начальной строки


m – количество выводимых
строк результата
26
Дополнительные функции
mysql_list_dbs
(<соединение>)
перечисляет все базы
данных, имеющиеся на
сервере MySQL
Для прохода по
результату с целью
получения списка баз
нужно использовать
функцию
mysql_fetch_object()
$db_list=mysql_list_dbs($db);
while ($row =
mysql_fetch_object($db_list)) {
echo $row->Database . "<br>\n";
}
ДОПОЛНИТЕЛЬНЫЕ ФУНКЦИИ
mysql_list_fields($dbname,$table_name) –
возвращает список имен полей таблицы в
конкретной БД
mysql_num_fields($list_f)– возвращает
количество имен полей таблицы в
конкретной БД
mysql_field_name ()– возвращает имя
заданного поля таблицы из списка
28
ОПЕРАТОРЫ DML

Оператор INSERT
$sql = ”insert into books(ISBN,TITLE,YEAR_IZD) values
(‘0004’,‘Базы данных’,2005)”;
$sql = ”insert into books values (‘0005’,‘MS SQL Server
2005’,2007,400)”;
$sql = ”insert into books values (‘$isbn’,‘$titl’,’$yearizd’,’$pages’)”;
29
РЕЗУЛЬТАТ

$r=mysql_query($sql); - логическая
переменная –
– неудачный вариант
 1- положительный результат.
0
30
Download