[英]How to properly use mysqli_real_escape_string
我有一个问题,就是无法束手无策。
如果将名称保存到mysql数据库中(如果名称包含撇号(单引号)),我会得到意外的结果。
我已经使用$name = mysqli_real_escape_string($con, $name);
保存了名称$name = mysqli_real_escape_string($con, $name);
其中$con
是连接字符串, $name
是名称。 但是,我得到的不是彼得O'Toole的$name
回来了,而是彼得O \\
有人可以告诉我我在哪里错吗?
当您将mysql_ *更改为mysqli时,不需要使用相同的样式,请使用准备好的语句。
老式
$name = mysqli_real_escape_string($_POST['name']);
$email = mysqli_real_escape_string($_POST['email']);
$password = mysqli_real_escape_string($_POST['password']);
$sql = "INSERT INTO `user`(name, email, password) VALUES('$name', '$email', '$password'));
$mysql_query($sql) or die(mysql_error());
在bind_param()
通知日期类型:
s => string
i => integer
d => double
b => blob
准备的stamentes风格
$db = new mysqli(...);
$sql = "INSERT INTO `user`(name, email, password) VALUES(?,?,?)";
$stmt = $db->prepare($sql);
$stmt->bind_param('sss', $name, $email, $password);
if(!$stmt->execute()){
echo $db->error;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.