mysqli_real_escape_string以其他方式使用它?

时间:2015-03-10 18:17:44

标签: php mysqli

我想知道我是否可以在secound方式使用mysqli_real_escape_string。 Usualy我这样使用它:

$name = $_POST['name'];
$nameSecure = mysqli_real_escape_string($name);
$sql = "SELECT * FROM persions WHERE firstname = {$name}";
$con->query($sql);

但是当我有更多$ _POST时,我可以这样使用mysqli_real_escape_string:

$name = $_POST['name'];
$sql = "SELECT * FROM persions WHERE firstname = {$name}";
$con->query(mysqli_real_escape_string($sql));

这两种方法之间有什么不同吗? Actualy我没有看到任何人使用secound方式。我可以使用secound方式,这两种方法之间的安全性是否存在差异?

1 个答案:

答案 0 :(得分:0)

  

这两种方法之间是否存在差异?

是。第一种方法只是转义$name字符串,而第二种方法转义整个查询字符串。

虽然这不是您的特定查询的问题,但它可能是查询的问题,例如:

SELECT * FROM table WHERE name = 'string';

由于mysqli_real_escape_string会转义引号,导致查询:

SELECT * FROM table WHERE name = \'string\';

在相关的说明中,我建议您阅读Prepared Statements