<?php
// класс базы данных
// есть соединение PDO в $link
// наш основной метод - запрос к БД
public function query($SQL, $params = [])
{
$stmt = $this->link->prepare($sql);
// просто биндим все параметры в цикле
// тут же происходит и очистка данных для базы
foreach ($params as $key => $value)
$stmt->bindValue($key, $value);
$stmt->execute();
return $stmt;
}
// теперь на основе метода запроса
// пишем метод для получени массива данных из базы
public function row($SQL, $params)
{
$result = $this->query($SQL, $params);
return $result->fetchAll(PDO::FETCH_ASSOC);
}
// теперь можно давать эту базу данных нужному классу и писать там
// что-то вроде
public function getUsers($status)
{
// теперь просто скармливаем нужные параметры(в массиве)
// методу БД для получения списка тех же пользователей
$users = $this->db->row('SELECT name, mail
FROM users
WHERE status = :status', [':status' => $status]);
return $users;
}
PD9waHAKLy8g0LrQu9Cw0YHRgSDQsdCw0LfRiyDQtNCw0L3QvdGL0YUKLy8g0LXRgdGC0Ywg0YHQvtC10LTQuNC90LXQvdC40LUgUERPINCyICRsaW5rCgovLyDQvdCw0Ygg0L7RgdC90L7QstC90L7QuSDQvNC10YLQvtC0IC0g0LfQsNC/0YDQvtGBINC6INCR0JQKcHVibGljIGZ1bmN0aW9uIHF1ZXJ5KCRTUUwsICRwYXJhbXMgPSBbXSkKewoJJHN0bXQgPSAkdGhpcy0+bGluay0+cHJlcGFyZSgkc3FsKTsKCS8vINC/0YDQvtGB0YLQviDQsdC40L3QtNC40Lwg0LLRgdC1INC/0LDRgNCw0LzQtdGC0YDRiyDQsiDRhtC40LrQu9C1CgkvLyDRgtGD0YIg0LbQtSDQv9GA0L7QuNGB0YXQvtC00LjRgiDQuCDQvtGH0LjRgdGC0LrQsCDQtNCw0L3QvdGL0YUg0LTQu9GPINCx0LDQt9GLCglmb3JlYWNoICgkcGFyYW1zIGFzICRrZXkgPT4gJHZhbHVlKQoJCSRzdG10LT5iaW5kVmFsdWUoJGtleSwgJHZhbHVlKTsKCSRzdG10LT5leGVjdXRlKCk7CglyZXR1cm4gJHN0bXQ7Cn0KCi8vINGC0LXQv9C10YDRjCDQvdCwINC+0YHQvdC+0LLQtSDQvNC10YLQvtC00LAg0LfQsNC/0YDQvtGB0LAKLy8g0L/QuNGI0LXQvCDQvNC10YLQvtC0INC00LvRjyDQv9C+0LvRg9GH0LXQvdC4INC80LDRgdGB0LjQstCwINC00LDQvdC90YvRhSDQuNC3INCx0LDQt9GLCnB1YmxpYyBmdW5jdGlvbiByb3coJFNRTCwgJHBhcmFtcykKewoJJHJlc3VsdCA9ICR0aGlzLT5xdWVyeSgkU1FMLCAkcGFyYW1zKTsKCXJldHVybiAkcmVzdWx0LT5mZXRjaEFsbChQRE86OkZFVENIX0FTU09DKTsKfQoKLy8g0YLQtdC/0LXRgNGMINC80L7QttC90L4g0LTQsNCy0LDRgtGMINGN0YLRgyDQsdCw0LfRgyDQtNCw0L3QvdGL0YUg0L3Rg9C20L3QvtC80YMg0LrQu9Cw0YHRgdGDINC4INC/0LjRgdCw0YLRjCDRgtCw0LwKLy8g0YfRgtC+LdGC0L4g0LLRgNC+0LTQtQpwdWJsaWMgZnVuY3Rpb24gZ2V0VXNlcnMoJHN0YXR1cykKewoJLy8g0YLQtdC/0LXRgNGMINC/0YDQvtGB0YLQviDRgdC60LDRgNC80LvQuNCy0LDQtdC8INC90YPQttC90YvQtSDQv9Cw0YDQsNC80LXRgtGA0Yso0LIg0LzQsNGB0YHQuNCy0LUpCgkvLyDQvNC10YLQvtC00YMg0JHQlCDQtNC70Y8g0L/QvtC70YPRh9C10L3QuNGPINGB0L/QuNGB0LrQsCDRgtC10YUg0LbQtSDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuQoJJHVzZXJzID0gJHRoaXMtPmRiLT5yb3coJ1NFTEVDVCBuYW1lLCBtYWlsIAoJCUZST00gdXNlcnMgCgkJV0hFUkUgc3RhdHVzID0gOnN0YXR1cycsIFsnOnN0YXR1cycgPT4gJHN0YXR1c10pOwoJCglyZXR1cm4gJHVzZXJzOwp9