PDO编写的声明

时间:2013-06-12 22:07:27

标签: php mysql pdo sql-injection

我知道应该使用PDO预处理语句来避免SQL注入。必须始终采用以下格式:

$stmt = $db->prepare('SELECT * FROM table where id = :id');
$stmt->execute( array(':id' => $_GET['id']) );

或以下任何格式都会否定SQL注入吗?

VERSION 1

$queryString = "SELECT * FROM table WHERE id = ".$_GET['id'];
$stmt= $db->prepare($queryString);  
$stmt->execute();
$row = $stmt->fetchAll(PDO::FETCH_ASSOC);

VERSION 2

$stmt = $db->query("SELECT * FROM table WHERE id = ".$_GET['id']);
$row = $stmt->fetchAll(PDO::FETCH_ASSOC);

1 个答案:

答案 0 :(得分:1)

您必须像在第一个代码中一样绑定变量。 Version 1Version 2代码均为 INSECURE