在使用PDO从数据库中选择某些内容之前,是否需要过滤我的变量?

时间:2017-06-02 16:44:03

标签: php mysql pdo

我有一个变量$Search,我想要这个查询

$sel=$con->prepare("SELECT * FROM users WHERE Username LIKE '%{:src}%'");
$sel->bindValue(":src",$Search);
$sel->execute();

我想知道在不对用户输入进行任何过滤的情况下进行此查询是否安全。

1 个答案:

答案 0 :(得分:0)

准备好的报表会为您引用您的数据,但为了使您的查询正常工作,您需要这样做:

$Search = "%$Search%";
$sel = $con->prepare("SELECT * FROM users WHERE Username LIKE :src");
$sel->bindValue(":src", $Search, PDO::PARAM_STR);

或直接:

$sel = $con->prepare("SELECT * FROM users WHERE Username LIKE :src");
$sel->bindValue(":src", "%$Search%", PDO::PARAM_STR);

如果您使用bindParam(),则需要使用第一个选项,因为它需要一个变量作为参考。