SlideShare a Scribd company logo
PHP & MySQL
Web
Владимир Бобров
MySql, MySQLi, PDO
MySql - устаревшее расширение, его не используем
Выбираем в основном между MySQLi и PDO.
MySQLi vs PDO
Основные отличия:
поддержка процедурного интерфейса и поддержка асинхронных не блокирующих
запросов в MySQli, и поддержка client-side prepared statements.
MySqli объектно-ориентированный и процедурный
$mysqli = new mysqli(‘localhost’, ‘user’, ‘god’,
‘db_name’);
$mysqli->close();
$mysqli = mysqli_connect(‘localhost’, ‘user’, ‘god’,
‘db_name’);
$res = mysqli_query($mysqli, “SELECT * FROM table”);
PDO
Расширение Объекты данных PHP (PDO) определяет
простой и согласованный интерфейс для доступа к
базам данных в PHP. Каждый драйвер базы данных,
в котором реализован этот интерфейс, может
представить специфичный для базы данных
функционал в виде стандартных функций
расширения
PDO продолжение
PDO обеспечивает абстракцию (доступа к данным). Это
значит, что вне зависимости от того, какая конкретная
база данных используется, вы можете пользоваться
одними и теми функциями для выполнения запросов и
выборки данных. PDO не абстрагирует саму базу данных,
это расширение не переписывает SQL запросы и не
эмулирует отсутствующий в СУБД функционал. Если
нужно именно это, необходимо воспользоваться
полноценной абстракцией базы данных.
Подготовленные запросы в mysqli
Подготовленные запросы в PDO
Типы данных MySQLi
• mysqli
• mysqli_stmt
• mysqli_result
Получение данных mysqli
● mysqli_result::fetch_all — Выбирает все строки из результирующего набора и помещает их в
ассоциативный массив, обычный массив или в оба
● mysqli_result::fetch_array — Выбирает одну строку из результирующего набора и помещает
ее в ассоциативный массив, обычный массив или в оба
● mysqli_result::fetch_assoc — Извлекает результирующий ряд в виде ассоциативного массива
● mysqli_result::fetch_field_direct — Получение метаданных конкретного поля
● mysqli_result::fetch_field — Возвращает следующее поле результирующего набора
● mysqli_result::fetch_fields — Возвращает массив объектов, представляющих поля
результирующего набора
● mysqli_result::fetch_object — Возвращает текущую строку результирующего набора в виде
объекта
● mysqli_result::fetch_row — Получение строки результирующей таблицы в виде массива
● mysqli_result::$field_count — Получение количества полей в результирующем наборе
Получение данных PDO
● PDOStatement::fetch — Извлечение следующей строки из результирующего набора
● PDOStatement::fetchAll — Возвращает массив, содержащий все строки результирующего
набора
● PDOStatement::fetchColumn — Возвращает данные одного столбца следующей строки
результирующего набора
● PDOStatement::fetchObject — Извлекает следующую строку и возвращает ее в виде объекта
● PDOStatement::getAttribute — Получение значения атрибута запроса PDOStatement
● PDOStatement::getColumnMeta — Возвращает метаданные столбца в результирующей
таблице
● PDOStatement::nextRowset — Переход к следующему набору строк в результате запроса
● PDOStatement::rowCount — Возвращает количество строк, модифицированных последним
Хранимые процедуры
Множественные запросы
MySQL поддерживает наличие нескольких SQL предложений в тексте одного запроса. Пересылка
на сервер нескольких выражений в одном запроса уменьшает количество клиент-серверных
взаимодействий, но требует специальной обработки.
Множественные запросы, или мультизапросы, должны запускаться функцией
mysqli_multi_query(). Отдельные SQL предложения в мультизапросе отделяются точкой с
запятой.
Множественные запросы
Active Records
Пусть существует таблица в базе данных. Для данной таблицы создаётся
специальный класс AR, являющийся отражением (представлением) таблицы,
таким образом, что:
● каждый экземпляр данного класса соответствует одной записи таблицы;
● при создании нового экземпляра класса (и заполнении соответствующих
полей) в таблицу добавляется новая запись;
● при чтении полей объекта считываются соответствующие значения
записи таблицы баз данных;
● при изменении (удалении) какого-либо объекта изменяется (удаляется)
соответствующая ему запись.

More Related Content

PDF
Web Internship - PHP and MySQL
PDF
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
PDF
11 - Web-технологии. Работа с СУБД
PDF
Mongo db aggregation
PDF
12 - Web-технологии. Django модели
PDF
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
PDF
Встреча №8. NSIncrementalStore, или как заставить Core Data варить ваш собств...
PDF
Интуит. Разработка приложений для iOS. Лекция 8. Работа с данными
Web Internship - PHP and MySQL
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
11 - Web-технологии. Работа с СУБД
Mongo db aggregation
12 - Web-технологии. Django модели
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
Встреча №8. NSIncrementalStore, или как заставить Core Data варить ваш собств...
Интуит. Разработка приложений для iOS. Лекция 8. Работа с данными

What's hot (20)

PDF
12 вариантов использования Redis — в Tarantool (Александр Календарев, Констан...
PDF
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
PDF
Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)
PPT
Эффективное программирование на NodeJS
PDF
Сергей Пузанков — XPath
PDF
Web осень 2013 лекция 3
PPTX
Cтрах и ненависть в MongoDB
PDF
Магия метаклассов
ODP
Работа с БД в Drupal 7
PDF
FrontTalks: Михаил Давыдов (Яндекс), «Promise – это не больно»
PDF
PDF
MongoDB@addconf
PDF
Python dict: прошлое, настоящее, будущее
PDF
Бессигнатурное обнаружение PHP-бэкдоров
PDF
Лекция #5. Введение в язык программирования Python 3
PDF
Олег Годовых «Страх и ненависть в Event Bus»
PDF
Страх и ненависть в Event Bus
ODP
Server optimization
PPT
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
12 вариантов использования Redis — в Tarantool (Александр Календарев, Констан...
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)
Эффективное программирование на NodeJS
Сергей Пузанков — XPath
Web осень 2013 лекция 3
Cтрах и ненависть в MongoDB
Магия метаклассов
Работа с БД в Drupal 7
FrontTalks: Михаил Давыдов (Яндекс), «Promise – это не больно»
MongoDB@addconf
Python dict: прошлое, настоящее, будущее
Бессигнатурное обнаружение PHP-бэкдоров
Лекция #5. Введение в язык программирования Python 3
Олег Годовых «Страх и ненависть в Event Bus»
Страх и ненависть в Event Bus
Server optimization
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Ad

Similar to PHP and MySQL (20)

PPTX
Java осень 2012 лекция 8
PPTX
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
PDF
Java осень 2013 лекция 8
PDF
Database (Lecture 14 – database)
PPTX
Работа с БД в Java
PPTX
C++ и базы данных
PDF
Java осень 2014 занятие 7
PDF
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
PDF
Java осень 2014 занятие 8
PDF
Лекция Android. БД SQLite, ContentProvider, Loader
PPTX
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
PPTX
Слайді для лекції за темою Функції РНР с базами даних MySQL
PDF
PDF
Доставка данных в реальном времени.
PPTX
Yii 2. Что нового?
PPTX
Разработка расширяемых приложений на Django
PPT
Yii development
ODP
Python infrastructure from scratch
PDF
YiiConf 2012 - Alexander Makarov - Yii2, что нового
Java осень 2012 лекция 8
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
Java осень 2013 лекция 8
Database (Lecture 14 – database)
Работа с БД в Java
C++ и базы данных
Java осень 2014 занятие 7
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Java осень 2014 занятие 8
Лекция Android. БД SQLite, ContentProvider, Loader
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Слайді для лекції за темою Функції РНР с базами даних MySQL
Доставка данных в реальном времени.
Yii 2. Что нового?
Разработка расширяемых приложений на Django
Yii development
Python infrastructure from scratch
YiiConf 2012 - Alexander Makarov - Yii2, что нового
Ad

More from Noveo (20)

PPTX
Гуманитарные специальности в IT-индустрии
PPTX
Box model, display and position (HTML5 тема 07 - box model, display position)
PPTX
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
PPTX
Стилизация текста (HTML5 тема 05 - стилизация текста)
PPTX
Семантика текста (HTML5 тема 04 - семантика текста)
PPTX
Основы CSS (HTML5 тема 02 - основы CSS)
PPTX
Структура HTML документа (HTML5 тема 01 - структура html документа)
PPTX
Yii2
PPTX
Сессии и авторизация
PPTX
Rest
PPTX
PHP basic
PPTX
PHP Advanced
PPTX
MySQL
PDF
Push Notifications (Lecture 22 – push notifications)
PDF
RxJava+RxAndroid (Lecture 20 – rx java)
PDF
Работа с соцсетями (Lecture 19 – social)
PDF
Работа с геоданными (Lecture 18 – geolocation)
PDF
Animations (Lecture 17 – animations)
PDF
Toolbar (Lecture 16 – toolbar)
PDF
Material Design (Lecture 15 – material design)
Гуманитарные специальности в IT-индустрии
Box model, display and position (HTML5 тема 07 - box model, display position)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Стилизация текста (HTML5 тема 05 - стилизация текста)
Семантика текста (HTML5 тема 04 - семантика текста)
Основы CSS (HTML5 тема 02 - основы CSS)
Структура HTML документа (HTML5 тема 01 - структура html документа)
Yii2
Сессии и авторизация
Rest
PHP basic
PHP Advanced
MySQL
Push Notifications (Lecture 22 – push notifications)
RxJava+RxAndroid (Lecture 20 – rx java)
Работа с соцсетями (Lecture 19 – social)
Работа с геоданными (Lecture 18 – geolocation)
Animations (Lecture 17 – animations)
Toolbar (Lecture 16 – toolbar)
Material Design (Lecture 15 – material design)

PHP and MySQL

  • 2. MySql, MySQLi, PDO MySql - устаревшее расширение, его не используем Выбираем в основном между MySQLi и PDO.
  • 3. MySQLi vs PDO Основные отличия: поддержка процедурного интерфейса и поддержка асинхронных не блокирующих запросов в MySQli, и поддержка client-side prepared statements.
  • 4. MySqli объектно-ориентированный и процедурный $mysqli = new mysqli(‘localhost’, ‘user’, ‘god’, ‘db_name’); $mysqli->close(); $mysqli = mysqli_connect(‘localhost’, ‘user’, ‘god’, ‘db_name’); $res = mysqli_query($mysqli, “SELECT * FROM table”);
  • 5. PDO Расширение Объекты данных PHP (PDO) определяет простой и согласованный интерфейс для доступа к базам данных в PHP. Каждый драйвер базы данных, в котором реализован этот интерфейс, может представить специфичный для базы данных функционал в виде стандартных функций расширения
  • 6. PDO продолжение PDO обеспечивает абстракцию (доступа к данным). Это значит, что вне зависимости от того, какая конкретная база данных используется, вы можете пользоваться одними и теми функциями для выполнения запросов и выборки данных. PDO не абстрагирует саму базу данных, это расширение не переписывает SQL запросы и не эмулирует отсутствующий в СУБД функционал. Если нужно именно это, необходимо воспользоваться полноценной абстракцией базы данных.
  • 9. Типы данных MySQLi • mysqli • mysqli_stmt • mysqli_result
  • 10. Получение данных mysqli ● mysqli_result::fetch_all — Выбирает все строки из результирующего набора и помещает их в ассоциативный массив, обычный массив или в оба ● mysqli_result::fetch_array — Выбирает одну строку из результирующего набора и помещает ее в ассоциативный массив, обычный массив или в оба ● mysqli_result::fetch_assoc — Извлекает результирующий ряд в виде ассоциативного массива ● mysqli_result::fetch_field_direct — Получение метаданных конкретного поля ● mysqli_result::fetch_field — Возвращает следующее поле результирующего набора ● mysqli_result::fetch_fields — Возвращает массив объектов, представляющих поля результирующего набора ● mysqli_result::fetch_object — Возвращает текущую строку результирующего набора в виде объекта ● mysqli_result::fetch_row — Получение строки результирующей таблицы в виде массива ● mysqli_result::$field_count — Получение количества полей в результирующем наборе
  • 11. Получение данных PDO ● PDOStatement::fetch — Извлечение следующей строки из результирующего набора ● PDOStatement::fetchAll — Возвращает массив, содержащий все строки результирующего набора ● PDOStatement::fetchColumn — Возвращает данные одного столбца следующей строки результирующего набора ● PDOStatement::fetchObject — Извлекает следующую строку и возвращает ее в виде объекта ● PDOStatement::getAttribute — Получение значения атрибута запроса PDOStatement ● PDOStatement::getColumnMeta — Возвращает метаданные столбца в результирующей таблице ● PDOStatement::nextRowset — Переход к следующему набору строк в результате запроса ● PDOStatement::rowCount — Возвращает количество строк, модифицированных последним
  • 13. Множественные запросы MySQL поддерживает наличие нескольких SQL предложений в тексте одного запроса. Пересылка на сервер нескольких выражений в одном запроса уменьшает количество клиент-серверных взаимодействий, но требует специальной обработки. Множественные запросы, или мультизапросы, должны запускаться функцией mysqli_multi_query(). Отдельные SQL предложения в мультизапросе отделяются точкой с запятой.
  • 15. Active Records Пусть существует таблица в базе данных. Для данной таблицы создаётся специальный класс AR, являющийся отражением (представлением) таблицы, таким образом, что: ● каждый экземпляр данного класса соответствует одной записи таблицы; ● при создании нового экземпляра класса (и заполнении соответствующих полей) в таблицу добавляется новая запись; ● при чтении полей объекта считываются соответствующие значения записи таблицы баз данных; ● при изменении (удалении) какого-либо объекта изменяется (удаляется) соответствующая ему запись.