我完全超出了我的深度,但可以使用一些幫助,因爲一些SQL代碼在我過去十年運行的PHPBB網站上已經崩潰。來自PHPBB的這個INSERT上的MySQL錯誤#1064
我有時可以張貼在黑板上,但其他時候我看到這條消息:
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";
任何幫助表示讚賞!
**警告**:這有一些嚴重的[SQL注入漏洞](http://bobby-tables.com/),因爲在查詢中使用了$ _GET數據。儘可能使用**準備好的陳述**。這些在['mysqli'](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)和[PDO](http://php.net/manual/)中很簡單en/pdo.prepared-statements.php)其中任何用戶提供的數據都是用'?'或':name'指示符指定的,後者使用'bind_param'或'execute'填充,具體取決於您使用的是哪一個。 – tadman