我知道mysqli_real_escape_string()函数用于防止SQL注入,但是我不知道为什么此函数设计为采用两个参数而不是仅一个参数?我知道$ _POST [“ firstname”]是使用此函数要转义的输入String,但是为什么还需要$ 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);
?>
如PHP手册所示:
该函数的过程风格需要一个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);
希望这可以澄清您的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句