我试图理解和阅读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));
在prepare()
语句中不需要转义变量,因为这是使用这些语句的原因之一,如文档中所示:
调用PDO::prepare()和PDOStatement::execute()(…)有助于防止SQL注入攻击,因为不需要手动引用参数。