这两个中哪一个是编写查询的安全方法?
$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
语句。但是,这样安全吗?
答案 0 :(得分:2)
看看你的问题我会说你阅读我写的PDO tutorial肯定会受益,其中说:
在PDO中运行查询有两种方法。如果查询中不使用任何变量,则可以使用
PDO::query()
方法。
和
如果要在查询中使用至少一个变量,则必须用占位符替换它,然后准备查询,然后执行它,分别传递变量。
现在您可以告诉您,对于此特定查询,您可以使用query()
方法而不是prepare / execute
$stmt = $pdo->query("UPDATE tableName SET fieldName = 0");
因为没有变量可供使用,这根本没有危险