我想在上线之前检查一下自己。我在互联网上阅读了很多不同的文章,但是我想知道这是否绝对可以保护我的SQL Injection代码。如果没有,我需要添加或删除什么?

$idtoapprove = mysql_real_escape_string($_POST['idtoapprove']);

$getcity = $conn->prepare('SELECT city, state FROM needs WHERE ID=:idtoapprove');
$getcity->bindParam(':idtoapprove', $idtoapprove);
$getcity->execute();

$cityrow = $getcity->fetch();
$needcity = $cityrow['city'];
$needstate = $cityrow['state'];

echo "$needcity, $needstate";

最佳答案

实际上,这里不需要mysql_real_escape_string是完全错误的(它来自不同的,已弃用的数据库库)并且会损坏您的数据。 (此外,无论如何这在这里都是无效的-mysql_real_escape_string()用于转义字符串,对于整数是没有用的。)

PDO准备好的声明就足够了。

关于php - PDO和转义输入:这是最安全的方法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18921066/

10-09 17:26