准备语句与经典插入查询

时间:2013-01-15 17:41:39

标签: php prepared-statement

  

可能重复:
  Php PDO::bindParam data types.. how does it work?

有人可以解释 - 为什么准备好的陈述更安全:

$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

1 个答案:

答案 0 :(得分:1)

放置在占位符中(取决于后端,有些做仿真,但不要谈论它们,因为那不是预备语句)。传统SQL的问题是命令和数据是混合。准备好的陈述通过有意识地将它们分开来解决该问题。准备好的陈述不仅仅是一种自动执行mysqli_real_escape_string的奇特方式。