2017-03-13 141 views
0

以下哪两项是编写查询的安全方法?编写PDO查询的安全方法

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

OR

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

我知道第二个方法是最好的方式,我用它,每当我在bindValue使用$variable。但在这里,我需要使用已知的整数0。所以,第一个过程似乎更容易,因为我不必再写另一个bindValue声明。但是,它安全吗?

+0

这将是有用的,http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php – hassan

+1

如果价值是一个常量淡水河谷第一个声明是安全的 – Jens

+0

你确定@Jens? –

回答

2

看你的问题,我会说,你一定会从阅读PDO tutorial我写的,它说受益:

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

如果至少一个变量将会在查询中使用,你有一个占位符代替它,然后准备好您的查询,然后执行它,分别传递变量。

所以,现在你可以说这个特定的查询,你可以使用query()方法,而不是准备/执行

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

,因为没有被使用的变量,并在所有

这个没有危险