2010-09-25 5 views
2

Эй, ребята, я изучаю OO PHP и изучал PDO. Одна вещь, о которой я не знаю, - это то, должен ли я использовать подготовленные заявления PDO в сочетании с функцией filter_var() или просто по себе. Например, должен ли я делатьИспользовать готовые статические записи 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); 

ответ

4

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

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

1

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

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