Php PDO准备的声明

Php PDO准备的声明,php,mysql,pdo,sql-injection,Php,Mysql,Pdo,Sql Injection,我知道应该使用PDO准备的语句来避免SQL注入。它必须始终具有以下格式: $stmt = $db->prepare('SELECT * FROM table where id = :id'); $stmt->execute( array(':id' => $_GET['id']) ); 或者以下任何格式也会否定SQL注入吗 版本1 版本2 您必须像在第一个代码中那样绑定变量。Version 1和Version 2代码都是不安全的通过在字符串中插入id,您在某种程度上否定了以P

我知道应该使用PDO准备的语句来避免SQL注入。它必须始终具有以下格式:

$stmt = $db->prepare('SELECT * FROM table where id = :id');
$stmt->execute( array(':id' => $_GET['id']) );
或者以下任何格式也会否定SQL注入吗

版本1

版本2


您必须像在第一个代码中那样绑定变量。
Version 1
Version 2
代码都是不安全的

通过在字符串中插入id,您在某种程度上否定了以PDO的方式添加参数的意义。这两个示例可能会起作用-您可以自己更轻松地测试它-但是第一个示例是唯一一个真正能够阻止注入的示例-这段代码可以工作吗?您试过了吗?绑定参数用于避免sql注入未准备语句
$queryString = "SELECT * FROM table WHERE id = ".$_GET['id'];
$stmt= $db->prepare($queryString);  
$stmt->execute();
$row = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt = $db->query("SELECT * FROM table WHERE id = ".$_GET['id']);
$row = $stmt->fetchAll(PDO::FETCH_ASSOC);