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