К содержанию
Meduza
Документация

База данных

App\DataBase\PDO используется для работы с базой данных.

Инициализация класса

Объект базы данных уже доступен в глобальной переменной $PDO.

/** @var App\DataBase\PDO $PDO */

global $PDO;

В переменной $PDO доступны стандартные методы PDO, а также дополнительный метод $PDO->execute($query, $data = null).

Простой запрос выборки данных

Код/Результат:

$statement = $PDO->execute('SELECT * FROM users');
$users = $statement->fetchAll();

echo print_r($users, true);
Array
(
  [0] => Array
    (
      [id] => 1
      [created_at] => 2026-03-24 11:21:46
      [updated_at] => 2026-03-24 11:21:46
      [email] => ivanov@mail.ru
      [email_verified_at] => 2026-03-24 16:22:28
      [password] => $2y$12$JHVe53hDKgjGSEL04Ly.dOJUvpbj2zDlG81uCfb0CjqCU7iIEHkRi
    )
  [1] => Array
    (
      [id] => 2
      [created_at] => 2026-03-24 11:22:12
      [updated_at] => 2026-03-24 11:22:12
      [email] => petrov@mail.ru
      [email_verified_at] => 
      [password] => $2y$12$b1HZqBt99UqaiPBoI4pV6.seQcCoKdfvlI3cM0olyeA/yJrFSnqK2
    )
  [2] => Array
    (
      [id] => 3
      [created_at] => 2026-03-24 11:22:50
      [updated_at] => 2026-03-24 11:22:50
      [email] => sidorov@mail.ru
      [email_verified_at] => 2026-03-24 17:22:17
      [password] => $2y$12$LSTYGoPI.eGmS773kKvLFeBnoNPXu6U7bj8F1tzo9ORuILRTps/bK
    )
)

Запрос с позиционными плейсхолдерами

Код/Результат:

$statement = $PDO->execute('SELECT * FROM users WHERE id = ? OR id = ?', [1, 3]);
$users = $statement->fetchAll();

echo print_r($users, true);
Array
(
  [0] => Array
    (
      [id] => 1
      [created_at] => 2026-03-24 11:21:46
      [updated_at] => 2026-03-24 11:21:46
      [email] => ivanov@mail.ru
      [email_verified_at] => 2026-03-24 16:22:28
      [password] => $2y$12$JHVe53hDKgjGSEL04Ly.dOJUvpbj2zDlG81uCfb0CjqCU7iIEHkRi
    )
  [1] => Array
    (
      [id] => 3
      [created_at] => 2026-03-24 11:22:50
      [updated_at] => 2026-03-24 11:22:50
      [email] => sidorov@mail.ru
      [email_verified_at] => 2026-03-24 17:22:17
      [password] => $2y$12$LSTYGoPI.eGmS773kKvLFeBnoNPXu6U7bj8F1tzo9ORuILRTps/bK
    )
)

Запрос с именованными плейсхолдерами

Код/Результат:

$statement = $PDO->execute('SELECT * FROM users WHERE id = :firstId OR id = :secondId', [
    ':firstId' => 1,
    ':secondId' => 3,
]);
$users = $statement->fetchAll();

echo print_r($users, true);
Array
(
  [0] => Array
    (
      [id] => 1
      [created_at] => 2026-03-24 11:21:46
      [updated_at] => 2026-03-24 11:21:46
      [email] => ivanov@mail.ru
      [email_verified_at] => 2026-03-24 16:22:28
      [password] => $2y$12$JHVe53hDKgjGSEL04Ly.dOJUvpbj2zDlG81uCfb0CjqCU7iIEHkRi
    )
  [1] => Array
    (
      [id] => 3
      [created_at] => 2026-03-24 11:22:50
      [updated_at] => 2026-03-24 11:22:50
      [email] => sidorov@mail.ru
      [email_verified_at] => 2026-03-24 17:22:17
      [password] => $2y$12$LSTYGoPI.eGmS773kKvLFeBnoNPXu6U7bj8F1tzo9ORuILRTps/bK
    )
)

Запрос с offset и limit

Код/Результат:

$statement = $PDO->execute('SELECT * FROM users LIMIT ?, ?', [0, 2]);
$users = $statement->fetchAll();

echo print_r($users, true);
Array
(
  [0] => Array
    (
      [id] => 1
      [created_at] => 2026-03-24 11:21:46
      [updated_at] => 2026-03-24 11:21:46
      [email] => ivanov@mail.ru
      [email_verified_at] => 2026-03-24 16:22:28
      [password] => $2y$12$JHVe53hDKgjGSEL04Ly.dOJUvpbj2zDlG81uCfb0CjqCU7iIEHkRi
    )
  [1] => Array
    (
      [id] => 2
      [created_at] => 2026-03-24 11:22:12
      [updated_at] => 2026-03-24 11:22:12
      [email] => petrov@mail.ru
      [email_verified_at] => 
      [password] => $2y$12$b1HZqBt99UqaiPBoI4pV6.seQcCoKdfvlI3cM0olyeA/yJrFSnqK2
    )
)

Запрос с передачей массива в IN

Код/Результат:

$statement = $PDO->execute('SELECT * FROM users WHERE id IN (?l)', [
    'list' => [1, 3],
]);
$users = $statement->fetchAll();

echo print_r($users, true);
Array
(
  [0] => Array
    (
      [id] => 1
      [created_at] => 2026-03-24 11:21:46
      [updated_at] => 2026-03-24 11:21:46
      [email] => ivanov@mail.ru
      [email_verified_at] => 2026-03-24 16:22:28
      [password] => $2y$12$JHVe53hDKgjGSEL04Ly.dOJUvpbj2zDlG81uCfb0CjqCU7iIEHkRi
    )
  [1] => Array
    (
      [id] => 3
      [created_at] => 2026-03-24 11:22:50
      [updated_at] => 2026-03-24 11:22:50
      [email] => sidorov@mail.ru
      [email_verified_at] => 2026-03-24 17:22:17
      [password] => $2y$12$LSTYGoPI.eGmS773kKvLFeBnoNPXu6U7bj8F1tzo9ORuILRTps/bK
    )
)

Запрос добавления данных

Код/Результат:

$statement = $PDO->execute('INSERT INTO users (?c) VALUES (?v)', [
    'columns' => ['email', 'password'],
    'values' => [
        'komarov@mail.ru',
        '$2y$12$9u6UAR0qpa5tH/ExpbsJR.FE7HZeccjRhMs.2WzxTpLDTcHhbs4iW',
    ],
]);
$affectedRows = $statement->rowCount();

echo $affectedRows;
1

Запрос обновления данных

Код/Результат:

$statement = $PDO->execute('UPDATE users SET ?d WHERE id = :id', [
    'data' => [
        'updated_at' => date('Y-m-d H:i:s'),
        'email_verified_at' => '2026-03-24 16:48:39',
    ],
    'id' => 4,
]);
$affectedRows = $statement->rowCount();

echo $affectedRows;
1