在Php PDO中的bindValue中使用$ id之前,是否需要使用(int)$ id

时间:2013-06-02 05:59:41

标签: php validation pdo prepared-statement sql-injection

我刚刚开始使用Php数据对象,我不确定的是,在查询中使用它之前,我必须验证某些变量是否为整数。例如,像这样:

$id = (int)$_POST['id']; // is this required    

$query = $pdo->prepare("SELECT * FROM `articles` WHERE `id` = ?");

$query->bindValue(1, $id);

$query->execute();

1 个答案:

答案 0 :(得分:1)

不需要它有两个原因:

  1. 您让PDO知道您将在数据库中查询列ID。 PDO不会解析$_POST['id']中的任何内容。

  2. bindValue的第二个值会自动转换为字符串(或您可能想要选择的任何类型)。 Here int $data_type = PDO::PARAM_STR