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