来自PHPBB的这个INSERT的MySQL错误#1064

时间:2016-12-07 19:47:08

标签: mysql phpbb

我完全不在我的深度,但可以使用一些帮助,因为一些SQL代码在我过去十年运行的PHPBB网站上已经破解。

我有时会在电路板上发帖,但有时我会看到这条消息:

  

SQL错误:1064您的SQL语法出错;检查   手册,对应右边的MySQL服务器版本   要在...附近使用的语法。

失败的代码是:

  

INSERT INTO phpbb_posts_text(post_id,post_subject,bbcode_uid,   post_text)VALUES(28612,'测试','0e2d19fcc7','我一直有   最近该网站存在一些问题。它适用于其他人吗?   你看到奇怪的SQL调试消息吗?')

来自php的代码写道:

$sql = ($mode != 'editpost') ? 
    "INSERT INTO " . POSTS_TEXT_TABLE . "
    (post_id, post_subject, bbcode_uid, post_text) 
    VALUES ($post_id, '$post_subject', '$bbcode_uid', '$post_message')" 
    : "UPDATE " . POSTS_TEXT_TABLE . " SET post_text = '$post_message',  bbcode_uid =
    '$bbcode_uid', post_subject = '$post_subject' WHERE post_id = $post_id";

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

$post_message包含一个引号字符,它终止字符串。您需要转义该值以防止像这样的SQL注入错误。

但最好是切换到预准备语句而不是直接将变量替换为SQL查询。你需要使用PDO或mysqli。