Класс SafePostgres предоставляет безопасный и удобный способ работы с базой данных PostgreSQL, используя паттерн Singleton для обеспечения единственного подключения. Он поддерживает выполнение SQL-запросов с использованием плейсхолдеров для безопасной подстановки значений и защиты от SQL-инъекций.
Класс SafePostgres предлагает методы для выполнения SQL-запросов, получения результатов, работы с плейсхолдерами и фильтрации данных.
public function query(string $query, ...$args): bool
Выполняет SQL-запрос с поддержкой плейсхолдеров.
query (string): SQL-запрос с плейсхолдерами....$args (mixed): Аргументы для замены плейсхолдеров.bool - Успешность выполнения запроса.Пример:
$db = SafePostgres::gI();
$db->query("INSERT INTO users (name, email) VALUES (?s, ?s)", 'John Doe', 'john@example.com');
public function getOne(string $query, ...$args): mixed
Возвращает одно значение из результата SQL-запроса.
query (string): SQL-запрос с плейсхолдерами....$args (mixed): Аргументы для замены плейсхолдеров.mixed - Значение первой колонки первой строки результата или false.Пример:
$db = SafePostgres::gI();
$userName = $db->getOne("SELECT name FROM users WHERE id = ?i", 1);
echo $userName;
public function getRow(string $query, ...$args): array|false
Возвращает одну строку в виде ассоциативного массива.
query (string): SQL-запрос с плейсхолдерами....$args (mixed): Аргументы для замены плейсхолдеров.array|false - Ассоциативный массив с данными строки или false.Пример:
$db = SafePostgres::gI();
$userData = $db->getRow("SELECT * FROM users WHERE id = ?i", 1);
print_r($userData);
public function getCol(string $query, ...$args): array
Возвращает массив значений одного столбца.
query (string): SQL-запрос с плейсхолдерами....$args (mixed): Аргументы для замены плейсхолдеров.array - Массив значений одного столбца.Пример:
$db = SafePostgres::gI();
$userEmails = $db->getCol("SELECT email FROM users");
print_r($userEmails);
public function getAll(string $query, ...$args): array
Возвращает все строки результата SQL-запроса в виде массива.
query (string): SQL-запрос с плейсхолдерами....$args (mixed): Аргументы для замены плейсхолдеров.array - Массив строк результата запроса.Пример:
$db = SafePostgres::gI();
$users = $db->getAll("SELECT * FROM users");
print_r($users);
public function filterArray(array $input, array $allowed): array
Фильтрует массив, оставляя только разрешенные ключи.
input (array): Входной массив.allowed (array): Список разрешенных ключей.array - Отфильтрованный массив.Пример:
$db = SafePostgres::gI();
$allowedFields = ['name', 'email'];
$postData = $_POST;
$filteredData = $db->filterArray($postData, $allowedFields);
print_r($filteredData);
Добавление данных в таблицу
Используйте метод query, чтобы безопасно вставить данные в базу с использованием плейсхолдеров:
$db = SafePostgres::gI();
$db->query("INSERT INTO users (name, email) VALUES (?s, ?s)", 'Jane Doe', 'jane@example.com');
Получение одной строки
Метод getRow возвращает одну строку в виде ассоциативного массива:
$db = SafePostgres::gI();
$user = $db->getRow("SELECT * FROM users WHERE id = ?i", 2);
print_r($user);
Фильтрация данных перед запросом
С помощью метода filterArray вы можете отфильтровать входные данные перед вставкой в базу:
$db = SafePostgres::gI();
$allowedFields = ['name', 'email'];
$filteredData = $db->filterArray($_POST, $allowedFields);
$sql = "INSERT INTO users SET ?u";
$db->query($sql, $filteredData);
Класс SafePostgres обеспечивает безопасное взаимодействие с PostgreSQL, используя PDO и систему плейсхолдеров. Он упрощает выполнение запросов, получение данных и защиту от SQL-инъекций, позволяя легко управлять базой данных в вашем приложении.