0

可能重复:
Php PDO::bindParam 数据类型.. 它是如何工作的?

有人可以解释一下 - 为什么准备好的声明更安全:

$stmt = $conn->prepare("INSERT INTO users (user, pass, salt) 
VALUES (:user, :pass, :salt");
    $stmt->bindParam(":user", $user);
    $stmt->bindParam(":pass", $pass);
    $stmt->bindParam(":salt", $salt);
    $stmt->execute();

插入查询首先使用占位符准备,然后放置值而不是占位符,但是 - 那有名secure point吗?

4

1 回答 1

1

这些值不会放入占位符中(取决于后端,有些会进行仿真,但不要谈论它们,因为那不是准备好的语句)。传统 SQL 的问题在于命令和数据是混合的。准备好的陈述通过故意将它们始终分开来解决这个问题。准备好的语句不仅仅是一种自动执行mysqli_real_escape_string.

于 2013-01-15T17:46:30.530 回答