-5

私はPDOを理解し、読み込もうとしています。

私は次のように書いたばかりで、うまく動作しますが、変数をエスケープしないので安全かどうか疑問に思っています.これらをエスケープする必要がありますか?

// Get Post Variables 
$first_name = $_POST['first_name'];
$surname = $_POST['surname'];
$email_addr = $_POST['email_addr'];
$user_type = $_POST['user_type'];


// query
$sql = "UPDATE users
    SET first_name=?, surname=?, email_addr=?, user_age=?, user_type=?
    WHERE user_id=?";
$q = $conn->prepare($sql);
$q->execute(array($first_name,$surname,$email_addr,$user_age,$user_type,$uid));
4

1 に答える 1

5

ドキュメントprepare()に示されているように、これらのステートメントを使用する理由の 1 つであるため、ステートメントで変数をエスケープする必要はありません。

PDO::prepare() および PDOStatement::execute() (...) を呼び出すと、パラメーターを手動で引用する必要がなくなり、SQL インジェクション攻撃を防ぐのに役立ちます。

于 2013-05-29T11:59:24.270 に答える