簡體   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