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

What's hot

12 вариантов использования Redis — в Tarantool (Александр Календарев, Констан...
12 вариантов использования Redis — в Tarantool (Александр Календарев, Констан...12 вариантов использования Redis — в Tarantool (Александр Календарев, Констан...
12 вариантов использования Redis — в Tarantool (Александр Календарев, Констан...Ontico
 
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?tfmailru
 
Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)
Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)
Использование Tarantool для хранения чатов и лент друзей (Константин Осипов)Ontico
 
Эффективное программирование на NodeJS
Эффективное программирование на NodeJSЭффективное программирование на NodeJS
Эффективное программирование на NodeJS
Yura Bogdanov
 
Сергей Пузанков — XPath
Сергей Пузанков — XPathСергей Пузанков — XPath
Сергей Пузанков — XPathYandex
 
Web осень 2013 лекция 3
Web осень 2013 лекция 3Web осень 2013 лекция 3
Web осень 2013 лекция 3Technopark
 
Cтрах и ненависть в MongoDB
Cтрах и ненависть в MongoDBCтрах и ненависть в MongoDB
Cтрах и ненависть в MongoDB
Dmitry Viskov
 
Магия метаклассов
Магия метаклассовМагия метаклассов
Магия метаклассов
Andrey Zakharevich
 
Работа с БД в Drupal 7
Работа с БД в Drupal 7Работа с БД в Drupal 7
Работа с БД в Drupal 7
Eugene Fidelin
 
FrontTalks: Михаил Давыдов (Яндекс), «Promise – это не больно»
FrontTalks: Михаил Давыдов (Яндекс), «Promise – это не больно»FrontTalks: Михаил Давыдов (Яндекс), «Promise – это не больно»
FrontTalks: Михаил Давыдов (Яндекс), «Promise – это не больно»
Yandex
 
Avito / SPA Meetup 2
Avito / SPA Meetup 2Avito / SPA Meetup 2
Python dict: прошлое, настоящее, будущее
Python dict: прошлое, настоящее, будущееPython dict: прошлое, настоящее, будущее
Python dict: прошлое, настоящее, будущее
delimitry
 
Бессигнатурное обнаружение PHP-бэкдоров
Бессигнатурное обнаружение PHP-бэкдоровБессигнатурное обнаружение PHP-бэкдоров
Бессигнатурное обнаружение PHP-бэкдоров
Positive Hack Days
 
Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3
Яковенко Кирилл
 
Олег Годовых «Страх и ненависть в Event Bus»
Олег Годовых «Страх и ненависть в Event Bus»Олег Годовых «Страх и ненависть в Event Bus»
Олег Годовых «Страх и ненависть в Event Bus»
DevDay
 
Страх и ненависть в Event Bus
Страх и ненависть в Event BusСтрах и ненависть в Event Bus
Страх и ненависть в Event Bus
0leGG
 
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Python Meetup
 

What's hot (20)

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

Similar to PHP and MySQL

Java осень 2012 лекция 8
Java осень 2012 лекция 8Java осень 2012 лекция 8
Java осень 2012 лекция 8Technopark
 
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
Ontico
 
Java осень 2013 лекция 8
Java осень 2013 лекция 8Java осень 2013 лекция 8
Java осень 2013 лекция 8Technopark
 
Database (Lecture 14 – database)
Database (Lecture 14 – database)Database (Lecture 14 – database)
Database (Lecture 14 – database)
Noveo
 
Работа с БД в Java
Работа с БД в JavaРабота с БД в Java
Работа с БД в Java
metaform
 
C++ и базы данных
C++ и базы данныхC++ и базы данных
C++ и базы данных
mcroitor
 
JDBC
JDBCJDBC
Java осень 2014 занятие 7
Java осень 2014 занятие 7Java осень 2014 занятие 7
Java осень 2014 занятие 7
Technopark
 
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Noveo
 
Java осень 2014 занятие 8
Java осень 2014 занятие 8Java осень 2014 занятие 8
Java осень 2014 занятие 8
Technopark
 
Лекция Android. БД SQLite, ContentProvider, Loader
Лекция Android. БД SQLite, ContentProvider, LoaderЛекция Android. БД SQLite, ContentProvider, Loader
Лекция Android. БД SQLite, ContentProvider, Loader
Александр Брич
 
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Fedor Lavrentyev
 
Lec 13
Lec 13Lec 13
Доставка данных в реальном времени.
Доставка данных в реальном времени. Доставка данных в реальном времени.
Доставка данных в реальном времени.
beshkenadze
 
Yii 2. Что нового?
Yii 2. Что нового?Yii 2. Что нового?
Yii 2. Что нового?
yiiconf
 
Разработка расширяемых приложений на Django
Разработка расширяемых приложений на DjangoРазработка расширяемых приложений на Django
Разработка расширяемых приложений на DjangoMoscowDjango
 
Yii development
Yii developmentYii development
Yii developmentMageCloud
 
Python infrastructure from scratch
Python infrastructure from scratchPython infrastructure from scratch
Python infrastructure from scratch
Виктор Тыщенко
 
YiiConf 2012 - Alexander Makarov - Yii2, что нового
YiiConf 2012 - Alexander Makarov - Yii2, что новогоYiiConf 2012 - Alexander Makarov - Yii2, что нового
YiiConf 2012 - Alexander Makarov - Yii2, что новогоAlexander Makarov
 
Влад Ковташ — Yap Database
Влад Ковташ — Yap DatabaseВлад Ковташ — Yap Database
Влад Ковташ — Yap Database
CocoaHeads
 

Similar to PHP and MySQL (20)

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

More from Noveo

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

More from Noveo (20)

Гуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрииГуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрии
 
Box model, display and position (HTML5 тема 07 - box model, display position)
Box model, display and position (HTML5 тема 07 - box model, display position)Box model, display and position (HTML5 тема 07 - box model, display position)
Box model, display and position (HTML5 тема 07 - box model, display position)
 
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
 
Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)
 
Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)
 
Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)
 
Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)
 
Yii2
Yii2Yii2
Yii2
 
Сессии и авторизация
Сессии и авторизацияСессии и авторизация
Сессии и авторизация
 
Rest
RestRest
Rest
 
PHP basic
PHP basicPHP basic
PHP basic
 
PHP Advanced
PHP AdvancedPHP Advanced
PHP Advanced
 
MySQL
MySQLMySQL
MySQL
 
Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)
 
RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)
 
Работа с соцсетями (Lecture 19 – social)
Работа с соцсетями (Lecture 19 – social)Работа с соцсетями (Lecture 19 – social)
Работа с соцсетями (Lecture 19 – social)
 
Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)
 
Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)
 
Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)
 
Material Design (Lecture 15 – material design)
Material Design (Lecture 15 – material design)Material Design (Lecture 15 – material design)
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, являющийся отражением (представлением) таблицы, таким образом, что: ● каждый экземпляр данного класса соответствует одной записи таблицы; ● при создании нового экземпляра класса (и заполнении соответствующих полей) в таблицу добавляется новая запись; ● при чтении полей объекта считываются соответствующие значения записи таблицы баз данных; ● при изменении (удалении) какого-либо объекта изменяется (удаляется) соответствующая ему запись.