-
Notifications
You must be signed in to change notification settings - Fork 1
Pdo
Плагин реализует декларативную модель взаимодействия с реляционной базой данных используя пакет PDO.
- dsn - источник данных в виде строки или массива
// Файл config.php [ 'pdo' => [ 'dsn' => [ 'mysql', 'dbname' => 'mydb', 'charset' => 'UTF8', ], ], ... ]
- username - имя пользователя, под которым будет осуществляться вход
- password - пароль пользователя для входа
- options - массив специфичных для драйвера настроек подключения
- queries - массив выполняемых к базе данных SQL запросов, состоящий из:
- первым элементов всегда указывается SQL запрос
- prototype - имя класса, экземпляры которого будут использоваться для представления данных запроса в системе (
stdClass
по умолчанию) - params - параметры запроса (если указано только значение, то тип параметра вычисляется автоматически)
- value - значение параметра
- type - тип параметра (см. PDO::PARAM_*)
- lazy - флаг, определяющий необходимость отложенного выполнения запроса (иначе запрос выполняется сразу после его формирования)
// Файл articles/view/index.php $sp = [ 'pdo' => [ 'queries' => [ 'articles' => [ 'SELECT * FROM article WHERE id = :id', 'prototype' => Article::class, 'params' => [ 'id' => [ 'value' => &$_GET['id'], 'type' => PDO::PARAM_INT, ], ], ] ], ... ]; ...
Важно: ключ, под которым объявляется запрос опции queries выступает в качестве имени переменной, принимающей результат этого запроса. Если запрос не возвращает данные (INSERT, UPDATE, DELETE), ключ можно опустить.
Пример записи данных:
// Файл articles/edit.php $sp = [ 'pdo' => [ 'queries' => [ [ 'UPDATE article SET title=:title, content=:content WHERE id=:id', 'params' => [ 'id' => &$_POST['id'], // Сокращенная форма параметра, тип определяется автоматически 'title' => &$_POST['title'], 'content' => &$_POST['content'], ], ], ] ], ... ]; ...
Важно: обязательно фильтруйте и верифицируйте данные перед использованием их в качестве параметров запроса. Перед вставкой, все кавычки в параметрах запроса автоматически экранируются.
pdo_connect(array $config) : PDO
Пытается выполнить подключение к базе данных с использованием указанных конфигураций. Повторный вызов функции всегда возвращает созданное ранее подключение.
pdo_statement_build(PDO $pdo, string $sql, [array $config]) : PDOStatement
Подготавливает и возвращает запрос к базе данных, используя тот же формат конфигурации, что и опция queries.
// Файл articles/index.php <?php $sp = [...]; include('../sp.php'); $pdo = pdo_build([ 'dsn' => 'mysql:dbname=mydb;charset=UTF8', 'username' => 'root', 'password' => '123', ]); $statement = pdo_statement_build($pdo, 'SELECT * FROM article LIMIT :start, :offset', [ 'params' => [ 'start' => ($_GET['page'] - 1) * 10, 'offset' => 10, ], ]); ...
Не получается разобраться? Спросите в чате!
- Быстрый старт
- Плагины