繁体   English   中英

如何正确使用mysqli_real_escape_string

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM