嘿,伙计们,我有一个有两个文本输入的表单,当用户填写它时,数据被插入到数据库中,像这样…
$sql = "INSERT INTO $user (note_name, note_body, creation_date)
VALUES ('$name','$note','$date')";
然而,我有一个问题,当一个撇号输入作为文本输入的一部分,我得到"错误在SQL语法"..我相信它将撇号作为SQL查询的一部分,对吧?假设我在$note变量中输入"Bob’s Computer","Bob’s"中的撇号是该变量周围撇号的结束?
有办法解决这个问题吗?
您可能需要在将数据作为查询之前对其进行消毒。清理将避免此类问题,即使输入是恶意的。您需要这样对变量使用mysqli_real_escape_string
:
$name = mysqli_real_escape_string($conn, $name);
$note = mysqli_real_escape_string($conn, $note);
$date = mysqli_real_escape_string($conn, $date);
$sql = "INSERT INTO `user` (`note_name`, `note_body`, `creation_date`) VALUES ('$name','$note','$date')";
同样,像上面那样将SQL查询放在反引号内总是好的。我还觉得表是user
而不是$user
有问题吗?
注意:预处理语句确实比使用这个函数更好。因为我不确定它的用法,所以我没有在我的回答中添加它。