Недавно начал изучение pdo, и был крайне удивлен насколько легко можно защитить свою бд от инъекций (плейсхолдеры и белые списки). Но! Возник вот такой вопрос: абсолютно ли все значения необходимо защищать плейсхолдерами, или же их разумно будет использовать только при передаче в запрос значений непосредственно от юзера?
Вот пример, в котором пользователь даже никак не влияет на данные запроса, однако, человек зачем-то закрыл id:
// получение названия категории по её ID
function readName()
{
// Запрос
$query = "SELECT name FROM " . $this->table_name . " WHERE id = ? limit 0,1";
// подготавливаем запрос
$stmt = $this->conn->prepare($query);
// присваиваем плейсхолдеру значение
$stmt->bindParam(1, $this->id);
// отправляем запрос
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$this->name = $row["name"];
}
}