Презентация Взаимодействие с СУБД. Лекция 5 онлайн
На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Взаимодействие с СУБД. Лекция 5 абсолютно бесплатно. Урок-презентация на эту тему содержит всего 30 слайдов. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Устройства и комплектующие » Взаимодействие с СУБД. Лекция 5
Оцените!
Оцените презентацию от 1 до 5 баллов!
- Тип файла:ppt / pptx (powerpoint)
- Всего слайдов:30 слайдов
- Для класса:1,2,3,4,5,6,7,8,9,10,11
- Размер файла:166.48 kB
- Просмотров:71
- Скачиваний:0
- Автор:неизвестен
Слайды и текст к этой презентации:
№6 слайд
![Интерфейс PHP Data Objects](/documents_6/ad3a5bbf8b79e1c852dfd296e8f31401/img5.jpg)
Содержание слайда: Интерфейс PHP Data Objects
PHP Data Objects (PDO) — расширение для PHP, предоставляющее разработчику универсальный интерфейс для доступа к множеству баз данных, в т.ч. PostgreSQL, MySQL, Oracle (OCI8), SQLite.
Чтобы узнать, для каких СУБД установлены драйверы в PDO, необходимо выполнить: print_r(PDO::getAvailableDrivers());
№7 слайд
![Имя источника данных DSN Имя](/documents_6/ad3a5bbf8b79e1c852dfd296e8f31401/img6.jpg)
Содержание слайда: Имя источника данных (DSN)
Имя источника данных (Data Source Name, DSN) – структура данных (строка), используемая для описания соединения к источнику данных. Используется во многих библиотеках, включая PDO и ODBC.
DSN включает:
Имя источника данных
Месторасположение источника данных
Имя драйвера для доступа к источнику данных
Идентификатор пользователя для доступа к данным (если требуется)
Пароль для доступа к данным (если требуется)
№8 слайд
![Соединение с базой данных](/documents_6/ad3a5bbf8b79e1c852dfd296e8f31401/img7.jpg)
Содержание слайда: Соединение с базой данных через PHP Data Objects
$host = "localhost"; // сервер баз данных
$db_name = "smiig"; // имя базы данных
$charset = "utf-8"; // кодировка базы данных
$user = "pavel"; // имя пользователя
$pass = “123456"; // пароль
$dsn = "mysql:host=$host;dbname=$db_name;charset=$charset";
// Дополнительные опции
$opt = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC );
// указатель на соединение
$dbh = new PDO($dsn, $user, $pass, $opt);
№9 слайд
![Соединение с базой данных](/documents_6/ad3a5bbf8b79e1c852dfd296e8f31401/img8.jpg)
Содержание слайда: Соединение с базой данных через PHP Data Objects
try {
# MS SQL Server и Sybase через PDO_DBLIB
$dbh = new PDO("mssql:host=$host;dbname=$db_name", $user, $pass);
$dbh = new PDO("sybase:host=$host;dbname=$db_name", $user, $pass);
# MySQL через PDO_MYSQL
$dbh = new PDO("mysql:host=$host;dbname=$db_name", $user, $pass);
# SQLite
$dbh = new PDO("sqlite:my/database/path/database.db");
}
catch(PDOException $e)
{
echo $e->getMessage();
}
№11 слайд
![Этапы выполнения запроса](/documents_6/ad3a5bbf8b79e1c852dfd296e8f31401/img10.jpg)
Содержание слайда: Этапы выполнения запроса
Каждый запрос должен быть выполнен в 3 (или 4 этапа)
prepare() – подготовка SQL-запроса
bindValue() / bindParam() – привязка данных к запросу (необязательно)
execute() – выполнение запроса (и привязка данных)
fetch() и аналоги – получение данных.
№12 слайд
![Вставка, обновление и](/documents_6/ad3a5bbf8b79e1c852dfd296e8f31401/img11.jpg)
Содержание слайда: Вставка, обновление и удаление записей
$query_insert = $dbh->prepare("INSERT INTO folks ( first_name ) values ( 'Пушкин' )");
$query_update = $dbh->prepare("UPDATE folks SET name = 'Пушкин' ");
$query_delete = $dbh->prepare("DELETE FROM folks WHERE name = 'Пушкин' ");
$query_insert->execute();
$query_update->execute();
$query_delete->execute();
№13 слайд
![Подготовленные выражения](/documents_6/ad3a5bbf8b79e1c852dfd296e8f31401/img12.jpg)
Содержание слайда: Подготовленные выражения
Подготовленные выражения (Prepared statements) – заранее скомпилированное выражение, которое может быть многократно выполнено путем отправки серверу лишь различных наборов данных.
Каждое скалярное значение, подставляемое в запрос динамически, должно быть представлено именованным (:name) или обычным placeholder’ом.
№14 слайд
![Примеры подготовленных](/documents_6/ad3a5bbf8b79e1c852dfd296e8f31401/img13.jpg)
Содержание слайда: Примеры подготовленных выражений
# без placeholders - дверь SQL-инъекциям открыта!
$query = $dbh->prepare("INSERT INTO folks (name, addr, city) values ($name, $addr, $city)");
# безымянные placeholders
$query = $dbh->prepare("INSERT INTO folks (name, addr, city) values (?, ?, ?)");
# именные placeholders
$query = $dbh->prepare("INSERT INTO folks (name, addr, city) values (:name, :addr, :city)");
№15 слайд
![Безымянные placeholder ы](/documents_6/ad3a5bbf8b79e1c852dfd296e8f31401/img14.jpg)
Содержание слайда: Безымянные placeholder’ы
# безымянные placeholders
$query = $dbh->prepare("INSERT INTO folks (name, addr, city) values (?, ?, ?)");
# назначаем переменные каждому placeholder, с индексами от 1 до 3
$query->bindParam(1, $name);
$query->bindParam(2, $addr);
$query->bindParam(3, $city);
# вставляем одну строку
$name = "Александр Пушкин";
$addr = "набережная реки Мойки, д. 12";
$city = "Санкт-Петербург";
$query->execute();
# вставляем еще одну строку, уже с другими данными
$name = "Михаил Лермонтов";
$addr = "набережная реки Фонтанки, д. 14";
$city = "Санкт-Петербург";
$query->execute();
№16 слайд
![Безымянные placeholder ы Если](/documents_6/ad3a5bbf8b79e1c852dfd296e8f31401/img15.jpg)
Содержание слайда: Безымянные placeholder’ы
Если в запросе слишком много параметров, можно задать их в виде одного массива вместо нескольких переменных.
# набор данных, которые мы будем вставлять
$data = array('Александр Пушкин',
'набережная реки Мойки, д. 12',
'Санкт-Петербург');
$query = $dbh->prepare("INSERT INTO folks (name, addr, city) values (?, ?, ?)");
$query->execute($data);
№18 слайд
![Именные placeholder ы здесь](/documents_6/ad3a5bbf8b79e1c852dfd296e8f31401/img17.jpg)
Содержание слайда: Именные placeholder’ы
# здесь тоже можно передавать массив, но он должен
# быть ассоциативным в роли ключей выступают
# placeholder’ы
# данные, которые мы вставляем
$data = array( 'name' => ‘Александр Пушкин',
'addr' => 'набережная реки Мойки, д.12',
'city' => ‘Санкт-Петербург' );
$query = $dbh->prepare("INSERT INTO folks (name, addr, city) VALUES (:name, :addr, :city)");
$query->execute($data);
№19 слайд
![Именные placeholder ы класс](/documents_6/ad3a5bbf8b79e1c852dfd296e8f31401/img18.jpg)
Содержание слайда: Именные placeholder’ы
# класс для простенького объекта
class person {
public $name;
public $addr;
public $city;
function __construct($n,$a,$c)
{
$this->name = $n;
$this->addr = $a;
$this->city = $c;
} # так далее...
}
$pushkin = new person('Александр Пушкин', 'набережная реки Мойки, д.12', 'Санкт-Петербург');
# а тут самое интересное
$query = $dbh->prepare("INSERT INTO folks (name, addr, city) values (:name, :addr, :city)");
$query->execute((array)$pushkin);
№20 слайд
![Выборка данных Данные могут](/documents_6/ad3a5bbf8b79e1c852dfd296e8f31401/img19.jpg)
Содержание слайда: Выборка данных
Данные могут быть получены методом ->fetch.
Существует несколько констант для установки режимов получения данных:
PDO::FETCH_ASSOC: возвращает массив с названиями столбцов в виде ключей
PDO::FETCH_NUM: возвращает массив с ключами в виде порядковых номеров столбцов
PDO::FETCH_BOTH (по умолчанию): возвращает массив с индексами как в виде названий столбцов, так и их порядковых номеров.
PDO::FETCH_OBJ: возвращает анонимный объект со свойствами, соответствующими именам столбцов
PDO::FETCH_CLASS: присваивает значения столбцов соответствующим свойствам указанного класса. Если для какого-то столбца свойства нет, оно будет создано
И некоторые другие
Для установки режима получения данных существует следующий синтаксис:
$query->setFetchMode(PDO::FETCH_ASSOC);
№21 слайд
![Режим FETCH ASSOC поскольку](/documents_6/ad3a5bbf8b79e1c852dfd296e8f31401/img20.jpg)
Содержание слайда: Режим FETCH_ASSOC
# поскольку это обычный запрос без placeholder’ов,
# можно сразу использовать метод query()
$query = $dbh->query('SELECT name, addr, city FROM folks');
# устанавливаем режим выборки
$query->setFetchMode(PDO::FETCH_ASSOC);
while($row = $query->fetch())
{
echo $row['name'] . "\n";
echo $row['addr'] . "\n";
echo $row['city'] . "\n";
}
№23 слайд
![fetchAll Использование этого](/documents_6/ad3a5bbf8b79e1c852dfd296e8f31401/img22.jpg)
Содержание слайда: fetchAll()
Использование этого метода для извлечения строк больших результирующих наборов может пагубно сказаться на производительности системы и сетевых ресурсов.
Вместо извлечения всех данных и их обработки в PHP рекомендуется использовать встроенные средства СУБД. Например, использование выражений WHERE и ORDER BY языка SQL может уменьшить размеры результирующего набора.
№24 слайд
![PDO и оператор LIMIT В режиме](/documents_6/ad3a5bbf8b79e1c852dfd296e8f31401/img23.jpg)
Содержание слайда: PDO и оператор LIMIT
В режиме эмуляции данные, которые были переданы напрямую в execute(), форматируются как строки. То есть, экранируются кавычками. Поэтому LIMIT ?,? превращается в LIMIT '10', '10' и очевидным образом вызывает ошибку синтаксиса.
$query = $dbh->prepare('SELECT * FROM table LIMIT ?, ?');
$query->bindParam(1, $limit_from, PDO::PARAM_INT);
$query->bindParam(2, $per_page, PDO::PARAM_INT);
$query->execute();
$data = $query->fetchAll();
№25 слайд
![Метод lastInsertID Метод - gt](/documents_6/ad3a5bbf8b79e1c852dfd296e8f31401/img24.jpg)
Содержание слайда: Метод lastInsertID()
Метод ->lastInsertId() возвращает id последней вставленной записи. Стоит заметить, что он всегда вызывается у объекта базы данных (у нас это $dbh), а не объекта с выражением ($query).
$query = $dbh->prepare("INSERT INTO folks ( first_name ) values ( 'Пушкин' )");
$query->execute();
# Выведет последний ID, вставленный в БД
echo $dbh->lastInsertId();
№26 слайд
![Метод exec Запускает SQL](/documents_6/ad3a5bbf8b79e1c852dfd296e8f31401/img25.jpg)
Содержание слайда: Метод exec()
Запускает SQL запрос на выполнение и возвращает количество строк, задействованных в ходе его выполнения
/* Удалить все строки, где присутствует слово "набережная" в адресе */
$count = $dbh->exec("DELETE FROM folks WHERE addr LIKE '%набережная%'");
/* Возвращает количество удалённых строк */
print("Удалено $count строк.\n");
Скачать все slide презентации Взаимодействие с СУБД. Лекция 5 одним архивом:
Похожие презентации
-
Лекция 4. Взаимодействие процессов
-
Проектирование высоко-нагруженных систем. Лекция 3
-
Методы улучшения алгоритмов сортировок. Лекция 7
-
Пирамидальная сортировка. Лекция 8
-
Классификация структур данных. Лекция 2
-
Базовые типы данных языков программирования высокого уровня. Лекция 3
-
Проектирование высоконагруженных систем. Лекция 2
-
Техники тест-дизайна. Планирование, оценка трудозатрат. Отчетность. Лекция 5
-
Операции и выражения. (Лекция 4)
-
Операторы в языке Си. (Лекция 5)