Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


П.11.Связь с базами данных на примере сервера MySQL

Одной из самых приятных возможностей языка PHP является легкость, с которой программист на нем может обращаться с базами данных. База данных – это совокупность связанных двухмерных таблиц, содержащих определенную информацию. Программное обеспечение, которое управляет базой данных, называется системой управления базой данных (СУБД). В данном уроке мы будем говорить о связи PHP и СУБД сервера MySQL.

База данных в MySQL, образно говоря, – это обыкновенная папка (каталог). Таблица физически представляется файлами с расширениями frm, MYD, MYI. Логически – таблица является совокупностью записей. Запись – это набор полей, содержащих связную информацию. Имя базы данных уникально в пределах системы, таблице – в пределах базы данных, а поля – в пределах таблицы.

Данная тема довольно важна и перед ее изучением хотелось бы поговорить о взаимодействии между браузером, Web-сервером, вашей программой написанной на PHP и сервером баз данных MySQL. Необходимо четко понимать, что принято называть сервером, а что клиентом. Для этого нужно разбираться в архитектуре “клиент-сервер”.

Архитектура «Клиент-сервер»

Сервер – это программа, представляющая какие-то услуги другим программам. Примеры серверов – Web-сервер Apache, серверы баз данных – MySQL, ORACLE, сетевые файловые системы и принтера Windows.

Клиент – это программа, использующая услугу, представляемую программой сервера. Примеры клиентов – MSIE (MS Internet Explorer), клиент ICQ. Часто люди клиентом или сервером просто называют компьютер, на котором работает какая-то из этих программ. В сущности, клиент и сервер – это роли, исполняемые программами. Клиенты и серверы физически могут находиться на одном компьютере. Одна и та же программа может быть и клиентом, и сервером одновременно, это только роли. Если привести пример из реальной жизни, то столовая или кафе являются серверами, они предоставляют услуги клиентам, населению, но в то же время столовая или кафе могут быть клиентами других структур или организаций.

Сервер и клиент в сети между собой «разговаривает» на «языке» (в широком смысле слов), понятном обеим сторонам. Этот «язык» называют протоколом.

Приведем примеры некоторых протоколов:

· FTP (File Transfer Protocol)

· HTTP (Hyper Text Transfer Protocol)

· SMTP (Simple Mail Transfer Protocol)

· IP (Internet Protocol)

· MySQL Client/Server Protocol

На «языке» протокола клиент отправляет серверу команду, которую тот понимает, выполняет и отправляет клиенту результат выполнения.

В нашем случае происходит взаимодействие между браузером, сервером Apache и сервером баз данных MySQL. Рассмотрим это взаимодействие поподробнее.

Допустим, пользователь запросил с помощью клиента (браузера) у сервера следующий документ: news/index.php. Тогда между браузером MSIE, сервером Apache и сервером баз данных MySQL произойдет следующий разговор на языке протоколов:

 

  1. (Apache) (ожидает запрос)
  2. (MSIE) Здравствуй!
  3. (Apache) Здравствуй!
  4. (MSIE) Сияешь?
  5. (Apache) Сияю!
  6. (MSIE) Давай страницу news/index.php
  7. (Apache) (находит PHP страницу index.php в директории /news)
  8. (Apache) (выполняет код PHP на сервере, в том числе запрашивает, ожидает и получает данные от MySQL сервера)
  9. (Apache) (делает страницу HTML из результатов выполненного кода PHP)
  10. (Apache) Получай!
  11. (MSIE) (получает текст HTML страницы)
  12. (MSIE) Пока!
  13. (Apache) Пока!
  14. (Apache) (ожидает следующий запрос)
  15. (MSIE) (переобразовывает HTML на понятный людям вид и показывает страницу пользователю)

 

Теперь можно более детально поговорить о том, каким образом происходит общение PHP программиста с базой данных MySQL.

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

 

Подключение к серверу базы данных

Если вы хотите начать работу со своей базой данных, вам необходимо сначала подключиться к серверу. Для этого можно воспользоваться функцией mysql_ connect(). Данная функция имеет три аргумента: имя компьютера, имя пользователя и его пароль. Функция возвращает нам некоторое целое число (указатель на соединение), вся дальнейшая работа будет осуществляться через этот указатель.

 

Пример 11.1 Подключение к серверу базы данных (файл primer11_1.php)

 

<?php

$p = mysql_connect("имя хоста", "имя пользователя","пароль") or die("Не могу подключиться к серверу базы данных");

?>

 

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

 

В данном примере использована знакомая вам функция die(). Если нам не удастся подключиться, mysql_connect() вернет не целое число, а false, тогда функция die() закончит работу программы и выведет предупреждающее сообщение. Если программа из этого примера работает правильно, вы должны увидеть пустую страницу.

 

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

После того, как соединение с сервером было установлено, вам нужно выбрать базу данных, с которой вы хотите начать работу. Для этого необходимо воспользоваться функцией mysql_ select_ db(), этой функции необходимо передать два параметра: имя базы данных и указатель на соединение. Функция возвращает значение истина, если база данных существует и доступ к ней возможен, и значение ложь, если сделать этого нельзя.

 

 Пример 11.2 Открытие подключения и выбор (файл primer11_2.php)

 

<?php

print "Соединяюсь…";

$p = mysql_connect("имя хоста", "имя пользователя","пароль") or die("Не могу подключиться к серверу базы данных");

print "Успешно";

print "Открываю базу данных new…";

mysql_select_db("имя базы данных") or die("No base!!! ");

print "База открыта";

?>

 

Функция mysql_select_db(“имя базы данных”) открывает уже существующую базу new. Если вы попытаетесь открыть несуществующую базу, программа, из данного примера, выведет строчку No base!!! и закончит свою работу.

 

Добавление данных в таблицу

Теперь самое время создавать таблицы нашей базы данных. Создадим в базе таблицу с именем telephones. В этой таблице будем хранить фамилии, адреса электронной почты и телефоны своих знакомых.

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

 

Типы данных

Типы целочисленных данных

tinyint

от -128 до 127

smallint

от -32 768 до 32767

mediumint

от -8 388 608 до 8 388 607

int

от -2 127 483 648 до 2 127 483 647

bigint

от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807

 

Типы вещественных чисел

float число с плавающей точкой небольшой точности
double число с плавающей точкой двойной точности

 

Строковые типы данных

tinytext

до 255 символов

text

до 65 535 символов

mediumtext

до 16 777 215 символов

longtext

до 4 294 967 295 символов

 

Другие типы данных.

Существуют так же типы данных, предназначенные для хранения даты и времени, изображений и др. Для хранения четко заданного количество символов используется специальный тип данных VARCHAR, где в скобках указывается это количество, например, VARCHAR(20).

Кроме определения типа данных при создании таблицы можно указать дополнительные инструкции – модификаторы и ключи. Они определяют "поведение" данных и те операции, которые можно или запрещено выполнять в соответствующих столбцах таблицы. Например,

NOT NULL – обязательно непустое поле,

PRIMARY KEY(имя_поля) – ключевое поле,

AUTO_INCREMENT – значение поля автоматически увеличивается на 1 (счетчик), используется только для ключевых и целочисленных полей,

INDEX или KEY – индексированные поля (первичный ключ автоматически индексирован),

UNIQUE – указывает на не повторяемость значений данных в поле.

 

 

Итак, вернемся к нашей таблице. Она будет содержать 4 поля следующих типов:

Имя поля Тип поля и уточняющие характеристики – модификаторы и ключи Назначение поля
id INT AUTO_INCREMENT PRIMARY KEY Счетчик записей, значения которого автоматически увеличиваются на 1, первичный ключ.
surname VARCHAR(20) Поле, которое будет содержать фамилии. Предположим, что длина фамилии не будет превышать 20 символов
email VARCHAR(20) Поле для записи телефонов
tel VARCHAR(20) Поле для адресов электронной почты

 

Таблицу создадим с помощью инструкции SQL:

create table telephones(id INT AUTO_INCREMENT PRIMARY KEY,

surname VARCHAR(20),

email VARCHAR(20),

tel VARCHAR(20));

 

Осталось только выполнить этот SQL запрос. Для этого используется функция mysql_querry(). Этой функции необходимо передать два параметра: строку с запросом и указатель на соединение. Функция возвращает положительное число (указатель запроса), в случае успешного выполнения запроса, и false в случае неудачи. Рассмотрим пример, в котором создаю описанную выше таблицу.

Пример 11.3 Создание таблицы telephones (файл primer11_3.php)

<?php

$p = mysql_connect("имя хоста", "имя пользователя","пароль") or die(“Не могу подключиться к серверу базы данных”);

mysql_select_db("имя базы данных", $p) or die("Не могу открыть");

$query = "CREATE TABLE telephones(id INT AUTO_INCREMENT PRIMARY KEY,

                                                                                               surname VARCHAR(20),

                                                                                               email VARCHAR(20),

                                                                                               tel VARCHAR (20))";

mysql_query($query, $p) or die("Не удалось выполнить запрос");

print "Таблица создана";

?>

 

Сформированный SQL запрос в виде строки записывается в переменную $query. Далее передаем эту строку, как первый аргумент функции mysql_query(). Вторым параметром идет указатель на соединение, полученный от функции mysql_connect(). Таблица создана.

Примечание. Нетрудно заметить, что запрос CREATE TABLE можно поместить непосредственно в функцию mysql_query в качестве первого параметра. Мы же занесли его в отдельную переменную $query для упрощения отладки первых программ.

 

Теперь заполним таблицу данными. В этом нет ничего сложного, достаточно корректно составить SQL запрос.

 

Пример 11.4 Добавление данных в таблицу (файл primer11_4.php)

 

<?php

$p = mysql_connect("имя хоста", "имя пользователя","пароль");

mysql_select_db("имя базы данных",$p) or die ("Не могу открыть");

$query = "INSERT INTO telephones(surname,email,tel)

values('Kolbin', 'user2000@mail.ru', '580-46-82')”;

mysql_query($query, $p) or die("Не удалось выполнить запрос");

print "Данные добавлены";

?>

 

Обратите внимание на то, что мы не указываем значение поля id. Это поле изменяется автоматически. В нашем примере мы добавили запись, содержащую информацию о человеке по фамилии Колбин. При каждом выполнении программы из примера 11.4 в таблицу будет добавляться новая запись, содержащая одни и те же данные, но с новым идентификатором id (он автоматически увеличивается на 1).

Заметим, что в предыдущем примере использовались как одинарные, так и двойные кавычки. Используйте их на свое усмотрение, только если Вы открыли двойную кавычку, то и закрыть Вы должны двойной. Внутри одних кавычек нужно использовать другие.

В примере 11.5 приведена программа, которая добавляет в таблицу данные, введенные пользователем.

 

Пример 11.5 Форма для ввода информации (файл add_user.html)

 

<html>

<body>

<form action="add.php" method="POST">

Surname <input type="text" name="surname">

Email:   <input type="text" name="email">

Tel:       <input type="text" name="tel">

<input type="submit" value="ADD">

</form>

<body>

<html>

 

В этом файле все довольно просто: создаем три текстовых поля для ввода информации и кнопку для отсылки этой информации файлу add.php, который будет ее заносить в базу данных.

 

Пример 11.6 Обработчик формы (файл add.php)

 

<?php

 

function add_data($surname, $email, $tel)

{

$p=mysql_connect("имя хоста", “имя пользователя”,”пароль”) or die(“Не могу подключиться к серверу базы данных”);

mysql_select_db("имя базы данныз",$p) or die("NO BASE!");

$query = "INSERT INTO telephones(surname, email, tel)     

                                                            values('$surname','$email','$tel')";

mysql_query($query,$p) or die("Could't execute");

}   

 

if (($_POST['surname']!="") and ($_POST['email']!="") and ($_POST['tel']!= ""))

{

add_data($_POST['surname'], $_POST['email'], $_POST['tel']);

print "Added data: Surname: ".$_POST['surname']. ", Email: ".$_POST['email']. ", TEl: " $_POST['tel']. "<br>";

}

else

{

print "Check data<br>";

}

?>

<html>

<body>

<a href="add.html">Add another</a>

</body>

</html>

 

Функция add_data() использована для добавления данных в базу. Внутри функции сначала мы подключаемся к нашей базе new. Если вы помните, в этой базе уже есть одна таблица (telephones). Функции add_data() необходимо передать в качестве аргументов три параметра: фамилию($surname), электронный адрес($email) и телефон($tel). Эти параметры PHP программа получит от нашей формы сразу после того, как будет нажата кнопка add.

Сразу после создания функции идет инструкция if, в задачу которой входит следующее: если переменная $surname и (and) переменная $email и переменная $tel не являются пустыми(!="") строками (иначе говоря, если вы заполнили все три поля для ввода информации), передать их функции add_data() в качестве аргументов и вывести информационное сообщение, повествующее о том, какие данные добавлены в базу. Если хотя бы одна из этих переменных содержит пустую строку (например, кто-то забыл ввести фамилию или телефон), выводится предупреждающая строчка, данные в базу не добавляются.

В конце программы имеется HTML-блок, который позволяет вернуться назад на страницу add_user.html с помощью ссылки. Этой ссылка необходима для случая, когда кто-то захочет ввести еще данные.

 

Доступ к информации, содержащейся в базе данных

 

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

 

Пример 11.7 Поиск по фамилии (файл primer11_7.php)

 

<?php

$p = mysql_connect("имя хоста", "имя пользователя","пароль");

mysql_select_db("имя базы данных") or die ("NO BASE!");

 

$query = "SELECT surname, tel, email

FROM telephones

WHERE surname = $_POST['surname']";

 

$result = mysql_query($query) or die ("Can't execute");

 

while($mas_info = mysql_fetch_row($result))

foreach($mas_info as $temp)

             {

             print "$temp<br>";

             }

?>

 

<html>

<head>

<title>  Find tel by name </title>

</head>

<body>

<form method ="POST">

Surname: <input type = "text" name = "surname">

              <input type = "submit" value = "FIND">

              </form>                    

</body>

</html>

 

 

Cначала мы подключаемся к нашей базе new. Затем формируем текст SQL-запроса, который должен помочь нам по фамилии получить другую информацию. В тексте запроса фигурирует значение переменной $surname, значение которой будем получать от пользователя через форму ввода. Сам текст мы сохраняем в переменной $query, которую передаем как аргумент функции mysql_query(). Данная функция возвращает нам положительное число, если текст запроса написан без ошибок, которое мы будем называть указатель запроса. Это число поможет нам с помощью различных функций получить информацию относительно запроса, на который оно указывает.

В условном выражении цикла while мы присваиваем переменной $mas_info массив значений, получаемый от функции mysql_fetch_row(). Данная функция позволяет занести записи, удовлетворяющие запросу, в массив. В качестве аргумента принимает указатель запроса. Если записей удовлетворяющих запросу нет, функция возвращает значение false и цикл while прекращает работу. В теле цикла мы просматриваем массив $mas_info и выводим этот массив на экран.

В HTML-блоке программы мы формируем форму для поиска по фамилии. Данная форма имеет единственное поле, предназначенное для ввода, интересующей нас фамилии.

 

Задание для самопроверки

Создайте базу данных для хранения анкетных данных сотрудников какого-нибудь предприятия. Напишите программу, которая позволит пользователям заполнять эту базу данных. Предусмотрите возможность поиска сотрудников по району проживания.

 

 

Оглавление

 

ПРИЛОЖЕНИЕ.. 1

ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ ЯЗЫК СЦЕНАРИЕВ PHP. 1

П.1. Начальные сведения. 1

Взаимодействие PHP и HTML.. 2

Задание для самопроверки. 2

П.2. Элементы языка. 3

Переменные. 3

Константы.. 4

Операторы и выражения. 4

Арифметические операторы.. 4

Инкремент и декремент.. 5

Оператор конкатенации. 5

Операторы сравнения. 6

Задание для самопроверки. 6

П.3.Управление потоком.. 6

Условные инструкции. 6

Инструкция if 6

Блок else инструкции if 7

Блок elseif инструкции if 8

Циклы.. 9

Цикл while. 10

Задание для самопроверки. 11

П.4.Функции. 11

Создание пользовательской функции. 12

Область видимости переменных. 13

Задание для самопроверки. 13

П.5.Массивы.. 13

Создание массива. 14

Определение массива с помощью функции array() 14

Создание элементов массива с помощью идентификатора. 14

Ассоциированные массивы.. 15

Работа с массивами. 16

Получение размера массива. 16

Просмотр массива с помощью цикла foreach. 16

Просмотр в цикле ассоциированного массива. 17

Сортировка простого массива с помощью функции sort() 17

Задание для самопроверки. 18

П.6.Работа с формами. 18

Программа обработки данных, введенных пользователем.. 18

Обработка элементов с многозначным выбором.. 20

Расположение HTML-текста и PHP-программы на одной странице. 22

Перенаправление пользователя. 23

Задание для самопроверки. 24

П.7.Работа с файлами. 24

Включение файлов в документ.. 24

Исследование файлов. 25

Проверка существования файла. 25

Создание и удаление файлов. 26

Открытие файла для чтения, записи или добавления. 26

Построчное чтение из файла с помощью fgets() 27

Запись в файл с помощью функции fwrite () 27

Задание для самопроверки. 28

П.8.Работа с датой и временем.. 29

Символ. 29

Описание. 29

Задание для самопроверки. 30

П.9.Форматирование данных при выводе на экран. 30

Работа с функцией printf() 30

Определитель. 30

Задание точности. 31

Задание для самопроверки. 31

П.10.Работа со строками. 31

Выделение необходимого элемента строки. 31

Определение длины строки. 31

Нахождение подстроки в строке. 32

Изменение регистра. 33

Задание для самопроверки. 33

П.11.Связь с базами данных на примере сервера MySQL.. 34

Архитектура «Клиент-сервер». 34

Подключение к серверу базы данных. 35

Выбор базы данных. 35

Добавление данных в таблицу. 36

Доступ к информации, содержащейся в базе данных. 39

Задание для самопроверки. 40

 



<== предыдущая лекция | следующая лекция ==>
Пример 7.2 Содержимое включаемого файла primer7_2.php | Что определяет техника безопасности?
Поделиться с друзьями:


Дата добавления: 2018-10-18; Мы поможем в написании ваших работ!; просмотров: 279 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Люди избавились бы от половины своих неприятностей, если бы договорились о значении слов. © Рене Декарт
==> читать все изречения...

2450 - | 2243 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.013 с.