Php 用PDO省略bindParam是安全的吗?
我想知道是否必须使用bindParam来防止使用PDO和MYSQL的SQL注入 例如:Php 用PDO省略bindParam是安全的吗?,php,mysql,security,pdo,sql-injection,Php,Mysql,Security,Pdo,Sql Injection,我想知道是否必须使用bindParam来防止使用PDO和MYSQL的SQL注入 例如: $username=$_POST['username']; $password=$_POST['password']; $cryptpass=hashFunction($password); $sth=$dbh->prepare("INSERT INTO users(username,password) VALUES(?,?)"); $sth->execute(array($username,$c
$username=$_POST['username'];
$password=$_POST['password'];
$cryptpass=hashFunction($password);
$sth=$dbh->prepare("INSERT INTO users(username,password) VALUES(?,?)");
$sth->execute(array($username,$cryptpass));
写这段代码是安全和正确的方法吗?省略bindParam会缩短代码。重要的是使用参数,而不是直接替换到查询字符串中。无论是使用
bindParam
还是使用数组参数将参数绑定到execute
,它们都是等效的。这仍然是将值绑定到准备好的语句。您正在做的事情与使用bindParam
函数时一样。所以答案是肯定的,它同样安全bindParam
只允许比简单地绑定execute
功能更多的功能,例如:
$sth=$dbh->prepare("Select * from users where status=:v1");
$sth->bindParam(':v1',1,PDO::PARAM_INT);
$sth->execute();
这允许您在默认情况下使用
execute
指定数据类型
,所有内容都作为字符串发送。此外,您还可以查看此类似问题的答案:查看此答案以了解详细信息: