Работа с базами данных

advertisement
PHP Урок 3. Работа с базами данных MySQL
Знакомство с mysql и phpmyadmin
Итак, для начала нам потребуется сервер, для того чтобы можно было запускать php
скрипты и подключаться к базе данных (БД). Приступим к изучению СУБД (средство
управления базой данных).
Создадим БД
Для этого нам необходимо открыть cpanel. Наберем в адресной строке
http://ajpro.kz/cpanel. Введем логин ajpro и пароль &.gK^{4.03rI
Для создания базы данных необходимо пользоваться первым ярлыком MySql Databases
Для управления базами данных необходимо воспользоваться phpMyAdmin
Рисунок 1. Внешний вид Cpanel.
Создаем первую базу данных в MySql Databases.
1. Откройте панель создания БД MySqlDatabases из Cpanel
2. Введите имя базы данных, используя английские строчные буквы без
пробелов. И нажмите кнопку создать БД “CreateDatabase”.
1
PHP Урок 3. Работа с базами данных MySQL
После создания базы данных вам необходимо создать пользователя для того чтобы
получить доступ к базе данных.
В том же окне найдите раздел создания пользователя и задайте имя и пароль и
нажмите Create User.
Заключающий этап это добавления пользователя в базу данных.
В том же окне MySqlDatabases найдем раздел Add User To Database и выберем нашу
базу данных и нашего пользователя и нажмем кнопку Add - добавить.
После нажатия кнопки add появится окно с выбором уровней доступа пользователя к
базе данных. Вы может ограничивать доступ для повышения безопасности. Не рекомендуется
разрешать пользователю удалять и очищать таблицы. Ниже приведены описания уровней
доступа.
ALL PRIVILEGES - как мы видели ранее, это даст пользователю MySQL полный
доступ к заданной базе данных (если база данных не указана, то ко всем).
CREATE - позволяет создавать новые таблицы или базы данных.
DROP - позволяет удалять таблицы или базы данных.
DELETE - позволяет удалять строки из таблиц.
INSERT - позволяет добавлять строки в таблицу.
SELECT - поволит использовать команду Select для чтения из баз данных.
UPDATE - позволит редактировать строки таблиц.
GRANT OPTION - позволит назначать или удалять права доступа для других
пользователей.
2
PHP Урок 3. Работа с базами данных MySQL
Окно выбора привилегий пользователя БД.
Для начала познакомимся СУБД PhpMyAdmin, она позволяет управлять (добавлять,
удалять, изменять) записями в БД.
Для этого откройте в Cpanel PHPMyAdmin
Ниже на рисунке отображен внешний вид главной страницы СУБД PhpMyAdmin. В
этом окне вы можете создать таблицу, и хранить в ней необходимые записи. Это очень удобно
при создании сайтов, так как информация структурирована, и вы можете очень быстро
получить любую запись из БД.
Приступим к изучению функционала phpmyadmin.
Для начала работы, нам потребуется создать саму БД (базу данных). У нее будет свое имя, по
которому мы потом будем ее искать.
3
PHP Урок 3. Работа с базами данных MySQL
Окно PHPMyAdmin
Общая структура строения базы данных:
4
PHP Урок 3. Работа с базами данных MySQL
Следуя схеме строения БД, нам нужно сделать таблицу. Для этого после создания
базы, у вас будет такое окно:
Здесь я создаю таблицу с именем users и 3 полями в ней.
Дальше phpmyadmin попросит нас задать структуру для каждого поля:
Здесь в столбце «Поле» нужно указать имя, в «Тип» указываем тип данных, которые будут
там храниться (INT — это число, VARCHAR — строка или небольшой(!) текст).
В «Дополнительно» указываем полю с именем «id» параметр «auto_increament», что означает,
оно будет увеличиваться каждый раз при вставке каких-либо данных, и задаем ему параметр
«Первичный ключ», это значит, что по первому столбцу мы сможем однозначно
идентифицировать поле.
«Однозначно идентифицировать поле» — значит даже если имя и фамилия будут одинаковы,
столбец «id» будет иметь разные значения (так как он автоматически увеличивается на
единицу каждый раз).
Теперь нажимаем «Сохранить». Тем самым мы создали таблицу users, в которой можем
хранить имя и фамилию (id не нужно вставлять, mysql сделает все за нас), в БД users.
Таблицу мы создавали для хранения записей. А как их туда вставлять?
5
PHP Урок 3. Работа с базами данных MySQL
Выбираем в меню «Вставить» и пишем нужные значения в необходимые поля.
Теперь как удалить или изменить значения в базе данных mysql с СУБД PhpMyAdmin:
Для удаления просто перейдите в меню «Обзор» и нажмите красный крестик напротив записи:
А для редактирования нажмите на карандаш и замените необходимые поля.
Теперь вы можете управлять базой данных mysql используя PhpMyAdmin.
6
PHP Урок 3. Работа с базами данных MySQL
Работа с базой данных mysql из php
Итак, для начала нужно научиться подключаться к уже заведомо созданной БД. Для
этого используется вот такой код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$connect=mysql_connect("localhost","root","");
/*
Здесь мы подключаемся к базе
используя функцию mysql_connect,
в ней следует указать
три параметра
1)сервер базы данных
2)логин пользователя БД
3)пароль пользователя БД
*/
$db=mysql_select_db("baza");
//Здесь мы указываем
//какую БД будем использовать
?>
.В вышеизложенном коде, я подключался к серверу localhost используя логин root который не
требует пароля (поэтому его не указываем).
После подключения к базе, мы можем проводить все те операции которые выполняли в СУБД
phpmyadmin. То есть вставку, удаление, изменение и получение различной информации.
Теперь по пунктам:
1) Вставка записей в базу данных
1
$query="INSERT INTO `таблицу` (`указываем поле`,`указываем поле`) VALUES ('любое
2
$result=mysql_query($query);
3
if($result==true)
4
{
5
echo "Успешно!";
}
6
else
7
{
8
echo "Ошибка!<br>".mysql_error();
9
}
10
То есть вставка производится функцией INSERT. Если все прошло успешно, то mysql вернет
результат true, или иначе — false.
7
PHP Урок 3. Работа с базами данных MySQL
Полей можно указывать хоть сколько, главное чтобы все они существовали в БД. То есть, к
примеру, существует таблица в которой есть поля «name» , «surname» и «city».
Для вставки в нее значений будем использовать такой код:
1
2
3
4
5
6
7
8
9
10
$query="INSERT INTO `users` (`name`,`surname`,`city`) VALUES ('Ruslan','Huzin','
$result=mysql_query($query);
if($result==true)
{
echo "Успешно!";
}
else
{
echo "Ошибка!<br>".mysql_error();
}
2) Удаление записей из базы данных
Удаление выполняется функцией DELETE. Для этого будет примерно вот такой код:
1
2
3
4
5
6
7
8
9
10
$query="DELETE FROM `users` WHERE `name`='Ruslan' ";
$result=mysql_query($query);
if($result==true)
{
echo "Успешно!";
}
else
{
echo "Ошибка!<br>".mysql_error();
}
То есть мы удалим из таблицы users все строки (ну или одну), где столбец name равен
значению Ruslan.
3) Изменение значений в базе данных
Также мы можем вносить изменения в уже существующие записи в таблице. К примеру нам
надо заменить значение столбца name в строке, где столбец surname имеет значение Huzin.
Для этого выполняем такой код:
1
2
3
4
5
6
7
8
9
$query="UPDATE `users` SET `name`='myname' WHERE `surname`='Huzin' ";
$result=mysql_query($query);
if($result==true)
{
echo "Успешно!";
}
else
{
echo "Ошибка!<br>".mysql_error();
}
8
PHP Урок 3. Работа с базами данных MySQL
10
4) Получение значений из базы данных
Теперь самое интересное) Раз мы записали что-то, то ведь должны и получить обратно?)))
К примеру нам нужно достать из таблицы users всю строку где столбец name равен Ruslan.
Для этого нам потребуется чуть другой код, нежели в первых примерах.
Вот собственно и он:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$query="SELECT * FROM WHERE `name`='Ruslan' ";
$result=mysql_query($query);
if($result==true)
{
echo "Успешно!";
}
else
{
echo "Ошибка!<br>".mysql_error();
}
$data=mysql_fetch_array($result);
/*
Теперь в переменной
хранятся данные из таблицы
*/
Тут нам потребовалась еще одна функция, для записи выбранных данных в переменную
(массив) на php.
Для того что обратиться к выбранной строке, мы пишем так:
$data[‘имя столбца’]
то есть, чтобы достать фамилию из выбранной строки (где имя было Ruslan), мы на вывод
должны написать:
echo $data[‘surname’];
А при выборке из таблицы, писали SELECT *, эта звездочка означает, что нужно выбрать все
столбцы из строки.
Если нам надо, к примеру, выбрать только surname, пишем SELECT `surname`.
9
PHP Урок 3. Работа с базами данных MySQL
А для выборки сразу нескольких строк из таблицы, потребуется еще и цикл для их вывода.
Это в том случае, если к примеру, строк со столбцом Ruslan будет несколько.
Вот код:
1
2
3
4
5
6
7
$query="SELECT * FROM WHERE `name`='Ruslan' ";
$result=mysql_query($query);
while($data=mysql_fetch_array($result))
{
echo $data['name']."<br>".$data['surname']."<hr>";
}
Теперь на экран выведутся все строки, у которых столбец name равен значению Ruslan.
Простые mysql запросы
Зная структуру БД, таблиц в БД и полей, можно посылать следующие запросы в MySQL.
Select запросы
слово select, говорит само за себя, и становится понятно, что пользуясь данными запросами,
мы будем выбирать (читать) информацию из БД.
SELECT count(*) FROM table_name;
Выведет количество всех записей в таблице
SELECT * FROM table_name;
Выбирает все записи из таблицы БД
SELECT * FROM table_name LIMIT 2,3;
Выбирает 3 записи из таблицы, начиная с 2 записи. Этот запрос
полезен при создании блока страниц навигации.
10
PHP Урок 3. Работа с базами данных MySQL
SELECT * FROM person ORDER BY number;
Выберет все записи из таблицы person в порядке возрастания
значений поля number.
SELECT * FROM person ORDER BY number DESC;
Выбирает все записи из person, но уже в порядке убывания (т.е. в
обратном порядке).
SELECT * FROM person ORDER BY number LIMIT 5;
Выбирает 5 записей из таблицы person, в порядке возрастания.
SELECT * FROM person WHERE name='Anna';
Выбирает все записи из таблицы person, где поле name
соответствует значению Anna.
SELECT * FROM person WHERE name LIKE 'An%';
Выбирает все записи из таблицы person, в которой значения поля
name начинаются с An.
SELECT * FROM person WHERE name LIKE '%na' ORDER BY number
;
Выбирает все записи из таблицы person, где name заканчивается
на na, и упорядочивает записи в порядке возрастания значения
number.
11
PHP Урок 3. Работа с базами данных MySQL
SELECT name, last_name FROM person;
Выбирает все значения полей name и last_name из таблицы
person.
SELECT DISTINCT site FROM table_name;
Выбирает уникальные (DISTINCT) значения поля site из таблицы
table_name. Например, при 5 значениях поля site: sitear.ru, sitear.ru,
sitear.ru, yaveterinar.ru, wi-korporaciya.ru; выведет только 3
уникальные значения: sitear.ru, yaveterinar.ru, wi-korporaciya.ru;
SELECT * from person where age in (12,15,18);
Выведет все записи таблицы person в которых значения поля age
будет равно 12 или 15 или 18.
select max(age) from person;
Выберет максимальное значение age из таблицы person.
select min(age) from person;
Выберет минимальное значение age из таблицы person.
Insert запросы
данные запросы позволяют вставить запись в таблицу БД. Другими словами создать строку в
таблице или добавить информацию в таблицу БД.
insert into table_name(site, description) values ('sitear.ru', 'SiteAR –
создание сайтов')
Вставит в таблицу table_name, а точнее в поля site и description
данной таблицы, соответствующие значения.
Update запросы
направлены на изменение уже имеющихся данных в таблице БД.
update table_name set site = 'domain.com' where id = '3'
Изменяет значение поля site на domain.com в таблице table_name
где id равен 3.
Delete запросы
удаляют записи из таблицы БД.
delete from table_name where id = '3'
Удаляет запись из table_name где id равен 3.
12
PHP Урок 3. Работа с базами данных MySQL
Сложные mysql запросы
Как уже упоминалось раньше, сложные mysql запросы, работают более, нежели с одной
таблицей БД. Данные mysql запросы, мы будем рассматривать более в индивидуальном
порядке, так как они сложные и их будет немного.
SELECT DISTINCT last_name FROM
address.address_no AND city LIKE 'L%';
person,
address
WHERE
person.adress_no
=
или
SELECT DISTINCT last_name FROM person p, address adr WHERE p.adress_no = adr.address_no
AND city LIKE 'L%';
Выводит все уникальные фамилии людей (last_name), которые живут в городе с названием на
букву L. (предполагаем, что в таблице address есть поля address_no, city).
Данные примеры сложных mysql запросов, выведут один и тот же результат. Запросы не
очень то и сложные, нужно только указать имя таблицы БД, а потом, через точку указать поле
таблицы. Или же можно, как во втором примере, дать короткие имена таблицам (p для person,
adr для address). Результат запросов будет один и тот же.
SELECT heroes.char_name, heroes.count, char_templates.ClassName FROM char_templates,
heroes WHERE char_templates.ClassId = heroes.class_id Order by char_templates.ClassName;
или
SELECT char_name, count, ClassName
heroes.class_id=char_templates.ClassId;
FROM
heroes
left
join
char_templates
on
Берем из таблицы heroes поле char_name, из heroes поле count, из таблицы char_templates
поле ClassName, где char_templates.ClassId и heroes.class_id имеют общий идентификатор и
сортируем запрос по имени класса героев.
Таким же образом, можно подавать сложные mysql запросы с помощью update, insert, delete и
др.
Задание.
1.
2.
3.
4.
5.
6.
7.
Создать форму регистрации пользователя.
Сделать проверку в базе данных существует ли пользователь с таким логином.
Если существует предложить перейти на форму входа на сайт или сменить пароль.
Если пользователь не существует, то добавить его в базу данных.
Создать форму входа на сайт.
Создать форму смены пароля.
Создать страницу подтверждения емайла.
13
Download