0
$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

什么是问题,我该如何解决?

4

1 回答 1

0

我很确定它来自$mysqli->query()需要正确转义查询的调用(即,没有任何好的安全参数)。这就解释了为什么它一开始就抱怨?

快速检查的方法是实际注释掉整个if语句并判断错误是否仍然出现。如果是这样,您知道这是查询而不是准备好的语句执行。

我对您的问题是:您为什么要执行准备好的语句,然后尝试再次将其作为查询运行?

我想你会发现execute你的更新做得很好。摆脱电话query,你应该没事。

于 2013-02-07T13:38:45.773 回答