我完全不在我的深度,但可以使用一些帮助,因为一些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";
任何帮助表示赞赏!
答案 0 :(得分:1)
$post_message
包含一个引号字符,它终止字符串。您需要转义该值以防止像这样的SQL注入错误。
但最好是切换到预准备语句而不是直接将变量替换为SQL查询。你需要使用PDO或mysqli。