我刚刚知道我有魔术点数(很多让我很懊恼)。我关掉了。
我的数据库连接是在此查询之前建立的。我有以下内容:
$subject = mysqli_real_escape_string($link, $_POST["subject"]);
$body = mysqli_real_escape_string($link, $_POST["body"]);
$id = mysqli_real_escape_string($link, $_POST["id"]);
mysqli_query($link, "UPDATE press SET press_title = '$subject', press_release = '$body' WHERE press_id = '$id'") or die( mysqli_error($link) );
使用魔术引号,这很好用。一旦我将其关闭,单引号就会堵塞工作(引用时出现MySQL语法错误)。我以为我理解了这个概念但我必须遗漏一些东西。有人可以解释我做错了吗?
更新
MySQL吐出的错误: 你的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以获得正确的语法,以便在第1行的“她所说的”附近使用
更新#2 这是echo'd查询:
UPDATE press SET press_title = \'That\'s what she said\', press_release = \'That\'s what she said again!\' WHERE press_id = \'513\'
答案 0 :(得分:1)
使用参数化查询:
$stmt = mysqli_prepare($link, "UPDATE press SET press_title = ?, press_release = ? WHERE press_id = ?") or die (mysqli_error($link));
mysqli_stmt_bind_param($stmt, "ssi", $_POST['subject'], $_POST['body'], $_POST['id']);
mysqli_stmt_execute($stmt);