Курс Web-программирование Лекция №7. PHP. MySQL.
Клиент-сервер
Клиент
Сервер
Дата-центр
Веб-сервер (виды)
Программная среда для веб-разработки
PHP
PHP
Где используется PHP
Первая программа на php
Результат обработки PHP -> HTML-код
Синтаксис PHP
Переменные
Константы
Тип Boolean (двоичные данные)
Тип integer (целые числа)
Тип float (числа с плавающей точкой)
Тип string (строки)
Арифметические операторы PHP
Логические операторы PHP
Строковые операторы PHP
Операторы присвоения PHP
Операторы сравнения PHP
Операторы инкремента и декремента в PHP
Массивы
Понятие
Ассоциативные массивы
Многомерные массивы
Операторы работы с массивами
Операторы работы с массивами (пример)
Циклы
Циклы
Свойства циклов
For
While
Foreach
Функции
Понятие функции
Стандартные (встроенные) функции
Категории стандартных функций
Пользовательские функции
Свойства функций
Область видимости
Анонимные функции
Отладка
Отладка
Функции отладки
MySQL
Что такое базы данных (БД) и как хранится информация в БД
Реляционная база данных
MySQL
Язык запросов SQL
Понятие
MySQL. Выполнение запросов
MySQL. Операторы
MySQL. Операторы. Продолжение
MySQL. Операторы. Продолжение
Работа с MySQL в PHP
Понятие
Как выглядит работа с базой данных
Функция mysqli connect: соединение с MySQL
Проверка соединения
Установка кодировки
Выполнение запросов
Добавление записи
Функция insert id: как получить идентификатор добавленной записи
Чтение записей
Чтение записей. Продолжение
Материалы к лекции
6.24M
Категория: ПрограммированиеПрограммирование

Лекция №6 - Презентация (PHP. MySQL)

1. Курс Web-программирование Лекция №7. PHP. MySQL.

Преподаватель: Жарков Алексей Сергеевич

2. Клиент-сервер

3. Клиент

4. Сервер

Веб-сервер - компьютер и программное обеспечение на нем,
которое прослушивает протокол TCP/IP

5. Дата-центр

6. Веб-сервер (виды)

7. Программная среда для веб-разработки

8. PHP

9. PHP

PHP (PHP Hypertext Preprocessor, гипертекстовый препроцессор PHP) — это язык
программирования, используемый со стороны сервера. Благодаря возможности комбинировать
код PHP и HTML, можно создавать динамические веб-страницы, показывающие каждый раз
разную информацию в зависимости от многих факторов. Например, настроек или полученных от
пользователя данных.
PHP — интерпретируемый язык. Это означает, что код, написанный на PHP не компилируется, а
выполняется строка за строкой с помощью интерпретатора — программы, которая читает
каждую строку и делает то, что в ней указано. Точно так же происходит выполнение программы
на Python, Ruby, Perl и других языках.
Зачем нужен PHP
Основная задача PHP — это «оживление» HTML страниц.
Обычные HTML-страницы статичны. Статичность (или неизменность) означает, что после того,
как страницу создали и загрузили на сайт, при каждом обращении к этой странице браузер
покажет её любому пользователю в неизменном виде.

10. Где используется PHP

Основная сфера применения языка PHP — это веб, то есть сайты, которые мы каждый день
посещаем через браузер компьютера или смартфона. Важно понимать, что веб — это не весь
интернет, а только самая большая и популярная его часть. Кроме веба через интернет работает
электронная почта, мессенджеры, файлообменные сервисы, сетевые игры и многое другое.
Практически каждый сайт, который есть в интернете, работает на PHP. Этот язык отлично
подходит для любых динамических веб-сайтов, среди которых:
✔социальные сети;
✔блоги и форумы;
✔интернет-магазины;
✔высоконагруженные и распределенные проекты.

11. Первая программа на php

12. Результат обработки PHP -> HTML-код

Результат обработки PHP -> HTML-код

13. Синтаксис PHP

14. Переменные

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

15. Константы

Константа хранит значение как переменная, но не позволяет его менять.

16. Тип Boolean (двоичные данные)

Это простейший тип. Он выражает истинность значения — это может быть либо TRUE, либо
FALSE.
<?php
$x = true; // присвоить $x значение TRUE
if($x == true){
$x = false;
}

17. Тип integer (целые числа)

Целые могут быть указаны в десятичной, шестнадцатеричной или
восьмеричной системе исчисления, по желанию, с предшествующим
знаком (- или +).
$a = 1234; // десятичное число
$a = -123; // отрицательное число
$a = 0123; // восьмеричное число (эквивалентно 83 в десятичной системе)
$a = 0x1A; // шестнадцатеричное число (эквивалентно 26 в десятичной
системе)

18. Тип float (числа с плавающей точкой)

Числа с плавающей точкой (они же числа двойной точности или
действительные числа)
$a=1.234;
$b=1.2e3;
$c=7E-10;
Никогда не доверяйте точности чисел с плавающей точкой до последней
цифры, и не проверяйте напрямую их равенство.

19. Тип string (строки)

Строка в PHP — это набор символов любой длины.
Длина строки ограничена только размером свободной оперативной
памяти.
$a = "Это просто текст, записанный в
строковую переменную";

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

21. Логические операторы PHP

22. Строковые операторы PHP

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

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

25. Операторы инкремента и декремента в PHP

26. Массивы

27. Понятие

Массив — это ещё один тип данных, вроде числа или строки. Главное
отличие массива от остальных типов данных заключается в его
способности хранить в переменной больше одного значения.
Массив — это совокупность множества элементов вида «ключ : значение».

28. Ассоциативные массивы

29. Многомерные массивы

30. Операторы работы с массивами

31. Операторы работы с массивами (пример)

32. Циклы

33. Циклы

Цикл — конструкция языка, которая выполняет заданный блок кода более одного
раза
Циклы:
• for (for($a=0; $a <count($array); $a++) { });
• foreach (foreach($array as $item) { });
• while (while(count($array) > 3) {})
Выводить содержимое помогают циклы. Для массивов проще всего использовать
цикл foreach.

34. Свойства циклов

Свойства циклов
Состоят из тела и условия;
Должны выполняться конечное число раз;
Каждое выполнение цикла называется «итерация»;
Можно прервать выполнение досрочно;
Могут быть вложенными;
Часто используются в коде, особенно при работе с массивами.

35. For

for (<условие цикла>) {
< тело цикла >
}
Пример цикла for
<?php
for ($last_num = 1; $last_num < 10, $last_num++ ) {
print($last_num);
}
Практическое применение: меню, списки.

36. While

while (<условие цикла>) {
< тело цикла >
}
Пример цикла while
<?php
$last_num = 1;
while ($last_num < 10) {
print($last_num);
$last_num = $last_num + 1;
}
Практическое применение: пагинация, выпадающий список из дат и т.д.

37. Foreach

foreach (<массив> as $key => $value) {
< тело цикла >
}
foreach отличается от циклов for и while тем, что у него нет условия. У него нет выражения,
которое должно быть истиной. Вместо этого в круглых скобках указывается сам массив,
потом ключевое слово as.
Преимущества foreach:
• создан специально для обхода массивов;
• требует писать гораздо меньше кода;
• позволяет обращаться к ключам элементов.
Практическое применение: работа с массива для формирования меню и т.д.

38. Функции

39. Понятие функции

Функция — блок кода, подпрограмма, которая может быть
именована и вызвана повторно
Назначение функций
Функцией будет называться некий блок кода, который можно вызвать
по его имени. Главное назначение функции — сделать код сценария
короче и понятнее.
Специализация функции
Важная характеристика функции — её специализация. Функция всегда
делает что-то одно, одну изолированную задачу.

40. Стандартные (встроенные) функции

● Уже существуют в языке;
● Нужны для решения общих задач;
● Хорошо документированы.
Примеры:
● count($array);
● sort($array);
● trim($text);
● date

41. Категории стандартных функций


Работа со строками;
Дата и время;
Работа с файлами и каталогами;
Математические функции;
Запуск внешних программ;
Графика;
Базы данных;
Работа с архивами;
Обратитесь к справочнику функций PHP, прежде чем писать код для решения задачи
самостоятельно

42. Пользовательские функции

● Определяются программистом;
● Используются как часть сценария;
● Не имеют документирования.
Определение пользовательской функции
function <имя функции>(<аргумент1>, …) {
<тело функции>
return <результат работы>
}

43. Свойства функций

● Нужны, чтобы избежать дублирования кода;
● Результат выполнения может быть присвоен переменной;
● Функция может возвращать результат;
● Может принимать аргументы;
● Создаёт свою область видимости.

44. Область видимости

Область видимости — это контекст, внутри которого переменная была
определена и где к ней можно получить доступ
Свойства области видимости
• Переменные, определенные за пределами функции называются «внешними»;
• Переменные, определенные внутри функции называются «внутренними»;
• Внутри функции внешние переменные не видны;
• Чтобы передать внешние переменные внутрь функции, нужно использовать
аргументы.
Аргументы и область видимости
Переменные, которые внутри функции называются внутренними, а которые
снаружи — внешними.
Внешние переменные внутри функции не видны, и наоборот. Чтобы организовать
связь между внешним кодом и функцией, то есть чтобы внутрь функций что-то
попало из внешнего кода, используются аргументы.

45. Анонимные функции

Особенности анонимных функций
● не имеют своего имени;
● могут быть присвоены переменной;
● можно передать как аргумент;
● полезны в качестве «функций обратного вызова».
Анонимную функцию можно присвоить переменной и вызвать ее по имени
переменной. Также анонимную функцию можно передать в качестве аргумента в
другую функцию. Чаще всего используется второй подход, когда мы передаем
анонимную функцию в качестве аргумента другой функции.

46. Отладка

47. Отладка

Процесс отладки — поиск ошибок в вашем коде.
Способы отладки:
«Дедовский» способ:
● Поставить отладочную запись;
● Добавить досрочный выход из скрипта;
● Запустить сценарий.
Современный способ:
● Установить современную IDE;
● Поставить «брейкпойнты»;
● Запустить отладчик.

48. Функции отладки

● print_r() — Умеет выводить на экран или возвращать
содержимое массива
● var_dump() — Распечатывает и форматирует все
содержимое массива вместе с указанием типов и
размерности
● die() или exit() — Досрочно прерывает выполнение кода

49. MySQL

50. Что такое базы данных (БД) и как хранится информация в БД

База данных (БД) — это программа, которая позволяет хранить
и обрабатывать информацию в структурированном виде.
БД это отдельная независимая программа, которая не входит
в состав языка программирования. В базе данных можно
сохранять любую информацию, чтобы позже получать к ней
доступ.
В основе всей структуры хранения лежат три понятия:
● База данных;
● Таблица;
● Запись.

51. Реляционная база данных

Английское слово „relation“ можно перевести как связь,
отношение. А определение «реляционные базы данных»
означает, что таблицы в этой БД могут вступать в отношения
и находиться в связи между собой.

52. MySQL

Существует множество различных реляционных СУБД. Самая известная
СУБД — это Microsoft Access, входящая в состав офисного пакета
приложений Microsoft Office, но для задач веб-программирования
гораздо лучше подходит альтернативная программа — MySQL.
MySQL абсолютно бесплатна, может работать на серверах с Linux,
обладает гораздо большей производительностью и безопасностью, что
делает её идеальным кандидатом на роль базы данных в вебразработке. Подавляющее большинство сайтов и приложений на PHP
используют в качестве СУБД именно MySQL.

53. Язык запросов SQL

54. Понятие

Система управления базами данных (СУБД) — это отдельная
программа, которая работает как сервер, независимо от PHP.
Создавать свои базы данных, таблицы и наполнять их данными можно
прямо из этой же программы, но для выполнения этих операций прежде
придётся познакомиться с ещё одним языком программирования —
SQL.
SQL или Structured Query Language (язык структурированных запросов)
— язык программирования, предназначенный для управления данными
в СУБД. Все современные СУБД поддерживают SQL.

55. MySQL. Выполнение запросов

По умолчанию, если вы не устанавливали дополнительные программы, у MySQL нет
графического интерфейса пользователя. Это значит, что единственный способ работы с ней
— это использование командной строки.
Выполните: mysql -uroot –p и введите пароль, заданный при установке. Каждый запрос
обязательно должен заканчиваться точкой с запятой ;
Как посмотреть список таблиц и их структуру в MySQL:
✔ SHOW DATABASES; - список баз данных
✔ SHOW TABLES [FROM db_name]; - список таблиц в базе
✔ SHOW COLUMNS FROM таблица [FROM db_name]; - список столбцов в таблице
✔ SHOW CREATE TABLE table_name; - показать структуру таблицы в формате "CREATE TABLE"
✔ SHOW INDEX FROM tbl_name; - список индексов
✔ SHOW GRANTS FOR user [FROM db_name]; - привилегии для пользователя.
✔ SHOW VARIABLES; - значения системных переменных
✔ SHOW [FULL] PROCESSLIST; - статистика по mysqld процессам
✔ SHOW STATUS; - общая статистика
✔ SHOW TABLE STATUS [FROM db_name]; - статистика по всем таблицам в базе

56. MySQL. Операторы

❖ Оператор SQL create database: создание новой базы данных
Новая БД в MySQL создается простой командой: CREATE DATABASE <имя базы
данных>. Выбор активной БД выполняется командой: USE <имя базы>;
❖ Оператор create table: создание таблиц
CREATE TABLE cities (
id INT AUTO_INCREMENT PRIMARY KEY,
name CHAR(128)
)
Первичный ключ: id INT AUTO_INCREMENT PRIMARY KEY. Это поле называется
первичным ключом. Обязательно создавать первичный ключ в каждой таблице.
Первичный ключ — это особенное поле, в котором сохраняется уникальный
идентификатор записи. Он нужен, чтобы у программиста и базы данных всегда
была возможность однозначно обратиться к одной конкретной записи для её
чтения, обновления или удаления.

57. MySQL. Операторы. Продолжение

❖ Оператор insert into: добавление записи в таблицу
insert into <название таблицы> set <имя столбца1> = <значение2>, <имя столбца2> =
<значение2>..
При добавлении записи не обязательно указывать значения для всех полей. Многие из
полей имеют значения по умолчанию, которые сами заполняются при сохранении.
❖ Оператор select: чтение информации из БД
Для вывода информации из БД используются запросы типа SELECT.
В запросе нужно указать имя таблицы, необходимые поля, а также дополнительные
параметры (будут рассмотрены в следующем уроке).
SELECT <перечисление полей> FROM <имя таблицы>
Вместо перечисления всех столбцов можно использовать знак звездочки — *.
❖ Оператор update: обновление информации в БД
Запрос с этим оператором позволяет обновить значение одного или нескольких полей в
существующей записи. Выглядит он так:
UPDATE <имя таблицы> SET <имя столбца1> = <значение2>, <имя столбца2> = <значение2>...
WHERE <имя столбца> = <значение>

58. MySQL. Операторы. Продолжение

❖ Оператор join: объединение записей из двух таблиц
Чтобы подставить на место числа действительное значение, в SQL существуют операторы
объединения — JOIN.
Поддержка операторов объединения и позволяет базе данных называться реляционной.
Например:
SELECT day, cities.name, temperature, cloud FROM weather_log JOIN cities ON weather_log.city_id
= cities.id
Важно усвоить три самых главных момента:
✔ При чтении из объединённых таблиц, в перечислении полей после SELECT нужно явно
указывать в поле имени также имя таблицы, с которой производится объединение.
✔ Всегда есть основная таблица (тб1), из которой читается большинство полей и
присоединяемая (тб2), имя которой определяется после оператора JOIN.
✔ Помимо указания имени второй таблицы, обязательно следует указать условие, по
которому будет происходить объединение.

59. Работа с MySQL в PHP

60. Понятие

PHP поддерживает работу с базой данных MySQL.
Специальные встроенные функции для работы с MySQL позволяют просто и
эффективно работать с этой СУБД: выполнять любые запросы, читать и
записывать данные, обрабатывать ошибки.
Сценарий, который подключается к БД, выполняет запрос и показывает
результат, будет состоять всего из нескольких строк. Для работы с MySQL не
надо ничего дополнительно устанавливать и настраивать; всё необходимое уже
доступно вместе со стандартной поставкой PHP.
Что такое mysqli?
mysqli (MySQL Improved) — это расширение PHP, которое добавляет в язык
полную поддержку баз данных MySQL. Это расширение поддерживает
множество возможностей современных версий MySQL.

61. Как выглядит работа с базой данных

Типичный процесс работы с СУБД в PHP-сценарии состоит из нескольких шагов:
1. Установить подключение к серверу СУБД, передав необходимые
параметры: адрес, логин, пароль.
2. Убедиться, что подключение прошло успешно: сервер СУБД доступен, логин
и пароль верные и так далее.
3. Сформировать правильный SQL запрос (например, на чтение данных
из таблицы).
4. Убедиться, что запрос был выполнен успешно.
5. Получить результат от СУБД в виде массива из записей.
6. Использовать полученные записи в своём сценарии (например, показать
их в виде таблицы).

62. Функция mysqli connect: соединение с MySQL

Перед началом работы с данными внутри MySQL, нужно открыть соединение с
сервером СУБД.
В PHP это делается с помощью стандартной функции mysqli_connect(). Функция
возвращает результат — ресурс соединения. Данный ресурс используется для всех
следующих операций с MySQL.
Но чтобы выполнить соединение с сервером, необходимо знать как минимум три
параметра:
✔ Адрес сервера СУБД;
✔ Логин;
✔ Пароль.
В случае OpenServer адресом сервера будет localhost, логином — root, а пароль для
подключения — это пустая строка ‘ ’.
Базовый синтаксис функции mysqli_connect():
mysqli_connect(<адрес сервера>, <имя пользователя>, <пароль>, <имя базы данных>);

63. Проверка соединения

Первое, что нужно сделать после соединения с СУБД — это выполнить проверку,
что оно было успешным.
Эта проверка нужна, чтобы исключить ошибку при подключении к БД. Неверные
параметры подключения, неправильная настройка или высокая нагрузка
заставит MySQL отвергать новые подключения. Все эти ситуации приведут к
невозможности соединения, поэтому необходимо проверить успешность
подключения к серверу, прежде чем выполнять следующие действия.
Соединение с MySQL устанавливается один раз в сценарии, а затем используется
при всех запросах к БД.
Результатом выполнения функции mysqli_connect() будет значение специального
типа — ресурс.
Если подключение к MySQL не удалось, то функция mysqli_connect() вместо
ресурса вернет логическое значение типа «ложь» — false.
Хорошей практикой будет всегда проверять значение результата выполнения
этой функции и сравнивать его с ложью.

64. Установка кодировки

Первым делом после установки соединения крайне желательно явно задать
кодировку, которая будет использоваться при обмене данными с MySQL. Если
этого не сделать, то вместо записей со значениями, написанными кириллицей,
можно получить последовательность из знаков вопроса: ‘?????????????????’.
Вызови эту функцию сразу после успешной установки соединения:
mysqli_set_charset($con, "utf8");

65. Выполнение запросов

Установив соединение и определив кодировку мы готовы выполнить свои
первые SQL-запросы.
Те же самые запросы можно отправлять без изменений и из PHP-сценария.
Помогут в этом несколько встроенных функций языка.
Два вида запросов
Следует разделять все SQL-запросы на две группы:
1. Чтение информации (SELECT).
2. Модификация (UPDATE, INSERT, DELETE).
При выполнении запросов из среды PHP, запросы из второй группы возвращают
только результат их исполнения: успех или ошибку.
Запросы первой группы при успешном выполнении возвращают специальный
ресурс результата. Его, в свою очередь, можно преобразовать в ассоциативный
массив (если нужна одна запись) или в двумерный массив (если требуется
список записей).

66. Добавление записи

Выражение INSERT INTO используется для добавления новых записей в таблицу
базы данных.
Необходимо составить корректный SQL-запрос на вставку записи, а затем
выполним его путём передачи этого запроса в функцию mysqli_query(), чтобы
добавить новые данные в таблицу.
Первым параметром для функциии mysqli_query() передаётся ресурс
подключения, полученный от функции mysqli_connect(), вторым параметром
следует строка с SQL-запросом.
При запросах на изменение данных (не SELECT) результатом выполнения будет
логическое значение — true или false.
false будет означать, что запрос выполнить не удалось. Для получения строки с
описанием ошибки существует функция mysqli_error($link).

67. Функция insert id: как получить идентификатор добавленной записи

Функция mysqli_insert_id().
Она принимает единственный аргумент — ресурс соединения, а возвращает
идентификатор последней добавленной записи.

68. Чтение записей

Другая частая операция при работе с базами данных в PHP — это получение
записей из таблиц (запросы типа SELECT).
Необходимо составить SQL-запрос, который будет использовать SELECT
выражение. Затем выполним этот запрос с помощью функции mysqli_query(),
чтобы получить данные из таблицы.
Результатом выполнения функции mysqli_query() являются не данные из
таблицы, а специальный тип данных — так называемая ссылка на результаты
запроса.
Чтобы получить действительные данные, то есть записи из таблицы, следует
использовать другую функцию — mysqli_fetch_array() — и передать ей
единственным параметром эту самую ссылку.
Теперь каждый вызов функции mysqli_fetch_array() будет возвращать следующую
запись из всего результирующего набора записей в виде ассоциативного
массива.

69. Чтение записей. Продолжение

Как получить сразу все записи в виде двумерного массива
Иногда бывает удобно после запроса на чтение не вызывать в цикле
mysqli_fetch_array для извлечения очередной записи по порядку, а получить их
сразу все одним вызовом. PHP так тоже умеет.
Функция mysqli_fetch_all($res, MYSQLI_ASSOC) вернёт двумерный массив со
всеми записями из результата последнего запроса.
Как узнать количество записей
Часто бывает необходимо узнать, сколько всего записей вернёт выполненный
SQL запрос.
Это может помочь при организации постраничной навигации, или просто в
качестве информации.
Узнать число записей поможет функция mysqli_num_rows(), которой следует
передать ссылку на результат запроса.

70. Материалы к лекции

1. Зачем нужен PHP https://htmlacademy.ru/blog/education/all/php-what-for
2. Учебник по PHP https://htmlacademy.ru/blog/php/tutorial
3. Официальная документация PHP https://www.php.net/manual/ru/index.php
4. Управляющие конструкции PHP
https://www.php.net/manual/ru/language.control-structures.php
5. Работа с массивами https://www.php.net/manual/ru/book.array.php
6. SQL для начинающих https://htmlacademy.ru/blog/php/mysql
7. Работа с mysql в php https://htmlacademy.ru/blog/php/mysql
8. MySQL 5.7 Reference Manual https://dev.mysql.com/doc/refman/5.7/en/
9. Open Server https://ospanel.io/download/
English     Русский Правила