|
@@ -40,6 +40,7 @@ http://pdo.asmer.php1.a-level.com.ua/init.php
|
|
Выше в коде показан один из способов выполнения запросов: использование метода `query` объекта класса PDO (`$dbh`, *database handler*)
|
|
Выше в коде показан один из способов выполнения запросов: использование метода `query` объекта класса PDO (`$dbh`, *database handler*)
|
|
с текстом запроса. `query` возвращает объект класса `PDOStatement`, который можно итерировать.
|
|
с текстом запроса. `query` возвращает объект класса `PDOStatement`, который можно итерировать.
|
|
|
|
|
|
|
|
+## Запрос и его подготовка.
|
|
Существует так же более безопасный и в определенных случаях более быстрый двухэтапный способ:
|
|
Существует так же более безопасный и в определенных случаях более быстрый двухэтапный способ:
|
|
|
|
|
|
```php
|
|
```php
|
|
@@ -60,3 +61,19 @@ try {
|
|
|
|
|
|
http://pdo.asmer.php1.a-level.com.ua/prepare.php
|
|
http://pdo.asmer.php1.a-level.com.ua/prepare.php
|
|
|
|
|
|
|
|
+Как видно, данные не передаются в запрос не как часть строки запроса, а в последствии в качестве ассоциативного массива. Несмотря на схожесть с
|
|
|
|
+предыдущим способом, запрос действительно *подготавливается* СУБД, после чего он выполняется быстрее, так как ему только передаются данные.
|
|
|
|
+Ко всему прочему это сводит на нет возможность SQL инъекций через поля.
|
|
|
|
+
|
|
|
|
+### Задание.
|
|
|
|
+
|
|
|
|
+Заполнить таблицы базы данных `blog` с помощью `PDO::prepare`.
|
|
|
|
+
|
|
|
|
+## Практикум: NoPMA
|
|
|
|
+
|
|
|
|
+Сделать простую одностраничную SQL-консоль, нечто среднее между `mysql` в консоли и `PHPMyAdmin`:
|
|
|
|
+1. Спросить логин, пароль и СУБД в форме. Проверить с помощью `PDOException`, если удачно, сохраняем в сессию.
|
|
|
|
+2. Если в сессии уже есть логин, пароль и СУБД, то показываем `textarea` для запроса.
|
|
|
|
+3. По отправке формы с полем ввода запроса передаем запрос в `query`, результат выводим в HTML-таблицу, если это выборка. Текст запроса должен сохранится
|
|
|
|
+ в `textarea` над HTML таблицей. Под `textarea` выводится текст ошибки или количество записей, задействованных в запросе.
|
|
|
|
+4. Для шаблонизации используем `twig`.
|