Использовать подготовленные PDO statemnts и filter_var? - PullRequest
2 голосов
/ 26 сентября 2010

Эй, ребята, я изучаю OO PHP и изучаю PDO. Однако мне неясно, следует ли мне использовать подготовленные операторы PDO вместе с filter_var () функции или просто сами по себе.Например, я должен делать

$query = $database->connection->prepare("SELECT name FROM acounts WHERE id = :id LIMIT 1");
$query->bindParam(":id", $this->id, PDO::PARAM_INT);

или что-то вроде этого?

$id = filter_var($this->id, FILTER_VALIDATE_INT);
$query = $database->connection->prepare("SELECT name FROM acounts WHERE id = :id LIMIT 1");
$query->bindParam(":id", $id, PDO::PARAM_INT);

Ответы [ 2 ]

4 голосов
/ 26 сентября 2010

Вообще говоря, это разные задачи.
Вы можете проверять свои данные по своему усмотрению.
Но сама PDO не нуждается ни в каких проверках.

Для предоставленного вами кода использование filter_var () не нужно, поскольку bindParam с флагом PDO :: PARAM_INT будет выполнять ту же работу

1 голос
/ 26 сентября 2010

Здесь достаточно параметризованного запроса.Вы уже получили -> $ id из локальной переменной.А метод PDO отлично подходит для защиты от эксплойтов базы данных.

Прежде всего, нужно различать, откуда вы получили $ id.Используйте filter_var везде, где вы импортируете ввод пользователя / http.Не используйте его только в целях безопасности, но с целью извлечения пользовательских данных в правильном формате.

...