我遇到了一个问题,我无法解决这个问题。
如果名称包含萎缩(单引号),则将名称保存到mysql数据库时,我会收到意外结果。
我使用$name = mysqli_real_escape_string($con, $name);
保存了名称,其中$con
是连接字符串,$name
是名称。然而,作为Peter O' Toole而不是$name
回归,我得到的是Peter O \
有人可以告诉我这里哪里出错吗?
答案 0 :(得分:2)
当您将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;
}