数据库是否仍然容易受到带有准备语句的 SQL 注入的攻击,如下例所示(我使用的是 PDO 和 php 版本 5.3):
$unsafe = $_POST['user_input'];
$stmt = $db->prepare("INSERT INTO table (column) VALUES ('" . $unsafe . "')");
这两个例子有什么值得一提的区别吗?
$stmt = $db->prepare('SELECT * FROM table WHERE name = :name');
$stmt->execute(array(':name' => $name));
和
$stmt = $db->prepare('SELECT * FROM table WHERE name = :name');
$stmt->bind_param(':name', $name);
$stmt->execute();
方法执行中可以使用哪些类型的参数?