Skip to content
Bashka edited this page Apr 26, 2017 · 2 revisions

Плагин реализует декларативную модель взаимодействия с реляционной базой данных используя пакет 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,
    ],
  ]);
  ...
Clone this wiki locally