使用PDO]库时是否需要mysql_real_escape_string()在输入中使用(例如$_POST和$_GET)?
mysql_real_escape_string()
$_POST
$_GET
如何使用PDO正确避开用户输入?
如果使用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)期间进行清理
$stmt->bindParam