我想知道我是否可以在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方式,这两种方法之间的安全性是否存在差异?
答案 0 :(得分:0)
这两种方法之间是否存在差异?
是。第一种方法只是转义$name
字符串,而第二种方法转义整个查询字符串。
虽然这不是您的特定查询的问题,但它可能是查询的问题,例如:
SELECT * FROM table WHERE name = 'string';
由于mysqli_real_escape_string
会转义引号,导致查询:
SELECT * FROM table WHERE name = \'string\';
在相关的说明中,我建议您阅读Prepared Statements。