$q2 = "UPDATE `tasks` SET `title` = ?, task = ?, rules = ?, media = ?, type = ?, xp = ?, available = ?, timestamp = ? WHERE id = ?";
if ($stmt = $mysqli->prepare($q2)) {
$stmt->bind_param("sssssissi", $_POST["tasktitle"], $_POST["editor"], $_POST["rules"], serialize($_POST["media"]), $_POST["type"], $_POST["xp"], $a = 0, strtotime("now"), $_GET['id']);
$stmt->execute();
$stmt->close();
}
$r = $mysqli->query($q2) or die($mysqli->error);
我收到了这个错误消息:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?, task = ?, rules = ?, media = ?, type = ?, xp = ?, available = ?, timestamp = ' at line 1
什么是问题,我该如何解决?
答案 0 :(得分:0)
我很确定它来自$mysqli->query()
的调用,它需要一个正确的转义查询(即,没有那个好的安全参数的东西)。这就解释了为什么它会在第一个?
抱怨。
快速检查方法是实际注释掉整个if
语句,如果错误仍然出现,则为se。如果是这样,您知道它是查询而不是准备好的语句执行。
我的问题是:你为什么要执行准备好的语句而然后试图再次作为查询运行它?
我认为你会发现execute
你的更新得很好。摆脱对query
的号召,你应该没事。