使用PDO而不绑定

时间:2014-01-14 09:49:01

标签: php mysql pdo sanitization

$stmt = $conn->prepare('SELECT * FROM users WHERE user_id = :user_id');

$stmt->execute(array(':user_id' => $_GET['user_id']));

$result = $stmt->fetchAll(PDO::FETCH_OBJ);

我正在使用这样的PDO,我是否需要清理GET参数?

我知道如果我做$stmt->bindParam(':user_id', $_GET['user_id'], PDO::PARAM_INT);而不是问题。但我的方式安全吗?

1 个答案:

答案 0 :(得分:9)

是的,这很安全。 executebind*之间的唯一区别是:

  • execute一次接受多个参数,而每个参数必须bind*
  • bind*允许您指定参数类型,而execute将所有内容绑定为字符串

将参数传递给execute主要是方便的简写,它仍然是安全的。