2017-03-13 68 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"); 

,因爲沒有被使用的變量,並在所有

這個沒有危險