编写PDO查询的安全方法

时间:2017-03-13 07:45:00

标签: php mysql pdo

这两个中哪一个是编写查询的安全方法?

$stmt = $pdo->prepare("UPDATE tableName SET fieldName = 0");

OR

$stmt = $pdo->prepare("UPDATE tableName SET fieldName = :parameter");
$stmt-> bindValue(':parameter', 0);

我知道第二种方法最好,每当我在$variable中使用bindValue时我就会使用它。但在这里,我需要使用已知的整数0。因此,第一个过程似乎更容易,因为我不必编写另一个bindValue语句。但是,这样安全吗?

1 个答案:

答案 0 :(得分:2)

看看你的问题我会说你阅读我写的PDO tutorial肯定会受益,其中说:

  

在PDO中运行查询有两种方法。如果查询中不使用任何变量,则可以使用PDO::query()方法。

  

如果要在查询中使用至少一个变量,则必须用占位符替换它,然后准备查询,然后执行它,分别传递变量。

现在您可以告诉您,对于此特定查询,您可以使用query()方法而不是prepare / execute

$stmt = $pdo->query("UPDATE tableName SET fieldName = 0");

因为没有变量可供使用,这根本没有危险