-
Notifications
You must be signed in to change notification settings - Fork 0
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,
],
]);
...
Не получается разобраться? Спросите в чате!
- Быстрый старт
- Плагины