Как сделать аргумент метода в виде названии таблицы
В метод пишу аргумент таблицы. Дальше мне нужно сделать запрос. Но вот проблема, это не работает.
Вот так это работает, но как я понял, это плохо со стороны безопасности сайта
# Проверка на существование поста
public function isExists($id, $table)
{
$vars = [
'id' => $id,
];
return $this->db->column("SELECT `id` FROM $table WHERE `id` = :id", $vars);
}
Мне нужно, чтобы это работало вот так:
# Проверка на существование поста
public function isExists($id, $table)
{
$vars = [
'id' => $id,
'table_checker' => $table
];
return $this->db->column("SELECT `id` FROM :tablechecker WHERE `id` = :id", $vars);
}
Это PHP MVC. Класс Database:
<?php
namespace application\core;
use PDO;
class Database
{
protected $db; // Protected поле db в него помещается соединение с базой данных
// Конструктор помещает в определенные поля, нужные параметры
public function __construct()
{
$config = require 'application/configs/db.php';
extract($config);
$this->db = new PDO('mysql:host='.$host.';dbname='.$dbname.';charset=utf8;', $username, $password);
$this->db->query("SET NAMES 'utf8'");
}
// Метод query отвечает за выполнение запроса через mysql
public function query($sql, $settings = [])
{
$preparedRequest = $this->db->prepare($sql);
if (!empty($settings)) {
foreach ($settings as $k => $v) {
if(is_int($v)) {
$type = PDO::PARAM_INT;
} else {
$type = PDO::PARAM_STR;
}
$preparedRequest->bindValue(':'.$k, $v, $type);
}
}
$preparedRequest->execute();
return $preparedRequest;
}
// Метод row отвечает за выполнение select запроса через mysql в определенном виде
public function row($sql, $settings = [])
{
$result = $this->query($sql, $settings);
return $result->fetchAll(PDO::FETCH_ASSOC);
}
// Метод column отвечает за выполнение select запроса через mysql в определенном виде
public function column($sql, $settings = [])
{
$result = $this->query($sql, $settings);
return $result->fetchColumn();
}