我知道mysqli_real_escape_string()函数用于防止SQL注入,但我不知道为什么这个函数被设计为采用两个参数而不是一个?我理解$ _POST [“firstname”]是使用此函数进行转义的输入字符串,但为什么$ connection也需要作为第一个参数?我是一个初学的PHP学习者,对不起,如果这个问题没有多大意义。
// escape variables for security
$firstname = mysqli_real_escape_string($con, $_POST['firstname']);
var_dump($firstname);
$lastname = mysqli_real_escape_string($con, $_POST['lastname']);
$age = mysqli_real_escape_string($con, $_POST['age']);
$sql="INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('$firstname', '$lastname', '$age')";
if (!mysqli_query($con,$sql)) {
die('Error: ' . mysqli_error($con));
}
echo "1 record added";
mysqli_close($con);
?>
答案 0 :(得分:1)
此函数的过程样式需要一个mysqli实例,换句话说,与先前创建的数据库的连接(这可能过于简单化):
string mysqli_real_escape_string ( mysqli $link , string $escapestr )
为了在没有第一个参数的情况下调用此函数,您需要实现mysqli类,因此为函数提供连接而不添加任何其他参数。这就是课程的实现方式:
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
这将是以面向对象的方式调用函数的方法:
$string = $mysqli->real_escape_string($string);
希望这能澄清一下你的问题。