一尘不染

如何使用PDO清理输入?

php

使用PDO]库时是否需要mysql_real_escape_string()在输入中使用(例如$_POST$_GET)?

如何使用PDO正确避开用户输入?


阅读 345

收藏
2020-05-29

共1个答案

一尘不染

如果使用PDO,则可以对查询进行参数化,从而无需转义任何包含的变量。

使用PDO,您可以使用准备好的语句将SQL和传递的参数分开,这消除了对转义字符串的需要,因为由于将两者分开保存,然后在执行时组合在一起,因此从上述来源自动将参数作为字符串处理:

   // where $dbh is your PDO connection

   $stmt = $dbh->prepare("SELECT * FROM animals WHERE animal_id = :animal_id AND animal_name = :animal_name");

   /*** bind the paramaters ***/
   $stmt->bindParam(':animal_id', $animal_id, PDO::PARAM_INT);
   $stmt->bindParam(':animal_name', $animal_name, PDO::PARAM_STR, 5);

   /*** execute the prepared statement ***/
   $stmt->execute();

注意:在变量绑定($stmt->bindParam)期间进行清理

2020-05-29