У меня был такой код
$idQuest = trim(htmlspecialchars(strip_tags($questionId)));
$setRename = trim(htmlspecialchars(strip_tags($name)));
$sql = "UPDATE question SET `user_name` = '".$setRename."' WHERE id = '".$idQuest."'";
$setName = $this->db->prepare($sql);
$setName->execute();
Мне рекомендовали, переделать его, с применением bindValue
и я сделал так
$idQuest = $questionId;
$setRename = $name;
$sth = $this->db->prepare("UPDATE question SET `user_name` = :setRename WHERE id = :idQuest");
$sth->bindValue(':setRename', $setRename, PDO::PARAM_STR);
$sth->bindValue(':idQuest', $idQuest, PDO::PARAM_INT);
$sth->execute();
Чем же он лучше?
trim(htmlspecialchars(strip_tags()))сразу можно увольнять :) Особенно для ID!!! – Visman Jun 01 '17 at 16:02prepareесли запрос полный. Что нужно экранировать? Во втором случаэ db/driver сами всё правильно экранируют. – E_p Jun 01 '17 at 16:50SQL Injectionдыркой. – E_p Jun 01 '17 at 17:05