Привет.
В подготовленных запросах вопроса с экранированием - нет. А вот как правильно поступить, если класс имеет примерно такой вид:
Как контролировать например $where, которое может быть не указано, или может затрагивать другие столбцы?
<?php
Class Test {
protected $where;
public function getAll()
{
$result=$this->db->prepare("SELECT * FROM table WHERE col=:col ".$this->where);
$result->execute(array("col"=>123));
return $result->fetchAll(PDO::FETCH_ASSOC);
}
public function byDate($start,$end=false)
{
$this->where.=" data BETWEEN $start AND ".($end ? $end : "NOW()");
return $this;
}
}
P.S. для
DevMan:
Вместо даты можно поставить инъекцию. Как облагородить?
$class=new Test();
var_dump($class->byDate("2021-05-01 00:00:00")->getAll());