2017-03-13 2 views
0

Welche von diesen beiden ist die sichere Methode, um eine Abfrage zu schreiben?Sicherer Weg, um eine PDO-Abfrage zu schreiben

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

ODER

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

Ich weiß, die zweite Methode ist Art und Weise am besten und ich benutze es, wenn ich ein $variable in bindValue verwenden. Aber hier muss ich eine bekannte ganze Zahl 0 verwenden. So schien der erste Prozess einfacher, da ich keine weitere bindValue Anweisung schreiben musste. Aber ist es sicher?

+0

das wäre nützlich, http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php – hassan

+1

Wenn der Wert eine Konstante ist, ist die erste Aussage sicher – Jens

+0

bist du sicher @Jens? –

Antwort

2

auf Ihre Fragen suchen Ich würde sagen, dass Sie auf jeden Fall aus der Lektüre der PDO tutorial profitieren werde ich schrieb, die sagt:

Es gibt zwei Möglichkeiten, um eine Abfrage in PDO auszuführen. Wenn in der Abfrage keine Variablen verwendet werden, können Sie die Methode PDO::query() verwenden.

und

, wenn mindestens eine Variable wird in der Abfrage verwendet werden soll, müssen Sie es mit einem Platzhalter ersetzen, dann wird Ihre Abfrage vorbereiten und sie dann ausführen, Variablen separat übergeben.

So, jetzt können Sie, dass für diese spezielle Abfrage Sie sagen, die query() Methode verwenden können, statt Vorbereiten/Ausführen

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

, da es keine Variablen sind an allen

verwendet und diese keine Gefahr werden
Verwandte Themen