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 に答える