dedecms新建內容模型“把數據保存到數據庫附加表時出錯‘xxx’出錯”錯誤的原因分析和解決方案(轉)


把數據保存到數據庫附加表 `bc_addonarticle17` 時出錯,請把相關信息提交給DedeCms官方。INSERT INTO `bc_addonarticle17`(aid,typeid,redirecturl,templet,userip,body, ) Values( 11 , 11 , , , 127 0 0 1, )You have an error in your

今天在使用dedecms之夢系統進行建站的時候,使用新創建的自定義內容模型來添加文章的時候出現了錯誤,錯誤描述如下:
系統返回錯誤:
把數據保存到數據庫附加表 `bc_addonarticle17` 時出錯,請把相關信息提交給DedeCms官方。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 'require,process) Values('11','11','','','127.0.0.1','asdfdsaf' ,'' ,'asd' ,'' ' at line 1;
首先知道這是一個數據通過表單提交給php程序進行處理保存到數據庫的整個過程當中在保存的數據庫這一環節出現了錯誤。於是找到了此表單提交到的php程序文件“dede/article_add.php”,找到處理自定義模型中生產的附加表內容添加的程序段:

 

//保存到附加表
$cts = $dsql->GetOne("SELECT addtable FROM `#@__channeltype` WHERE id='$channelid' ");
$addtable = trim($cts['addtable']);
if(empty($addtable))
{
$dsql->ExecuteNoneQuery("DELETE FROM `#@__archives` WHERE id='$arcID'");
$dsql->ExecuteNoneQuery("DELETE FROM `#@__arctiny` WHERE id='$arcID'");
ShowMsg("沒找到當前模型[{$channelid}]的主表信息,無法完成操作!。","javascript:;");
exit();
}
$useip = GetIP();
$templet = empty($templet) ? '' : $templet;
$query = "INSERT INTO `{$addtable}`(aid,typeid,redirecturl,templet,userip,body{$inadd_f}) Values('$arcID','$typeid','$redirecturl','$templet','$useip','$body'{$inadd_v})";
if(!$dsql->ExecuteNoneQuery($query))
{
$gerr = $dsql->GetError();
$dsql->ExecuteNoneQuery("Delete From `#@__archives` where id='$arcID'");
$dsql->ExecuteNoneQuery("Delete From `#@__arctiny` where id='$arcID'");
ShowMsg("把數據保存到數據庫附加表 `{$addtable}` 時出錯,請把相關信息提交給DedeCms官方。".$query.str_replace('"','',$gerr),"javascript:;");
exit();
}

 

大約在203行左右,筆者首先加入輸出其sql語句的程序語句來查看是否是生產的sql插入語句有錯誤,具體是在返回提示信息的地方字符串中鏈接一個$query變量:
ShowMsg("把數據保存到數據庫附加表 `{$addtable}` 時出錯,請把相關信息提交給DedeCms官方。".$query.$query.str_replace('"','',$gerr),"javascript:;");
在此添加一個文章查看返回的提示中的sql語句如下:

 

把數據保存到數據庫附加表 `bc_addonarticle17` 時出錯,請把相關信息提交給DedeCms官方。INSERT INTO `bc_addonarticle17`(aid,typeid,redirecturl,templet,userip,body,sectitle,introduce,require,process) Values('11','11','','','127.0.0.1','asdfdsaf' ,'' ,'asd' ,'' ,'' )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 'require,process) Values('11','11','','','127.0.0.1','asdfdsaf' ,'' ,'asd' ,'' ' at line 1

 

檢查此sql語句發現並沒有語句上的錯誤,然后打開數據庫查看對應的數據庫表也沒用錯誤

由此知道不是程序上的問題,而應該是自己添加的字段時候上的一些問題,例如添加字段時的類型屬性設置是否合理,字段命名是否合理(是否是系統保留字段或者已存在而出現沖突等);
由此思路逐日者有檢查了一邊內容模型選項中各字段設定是否有不合理的地方(核心—內容模型管理—修改—字段管理),發現並無問題后考慮到require或process字段是報錯點,那么很有能是兩個字段命名上有問題,於是筆者重新創建了一個更改了相應兩個字段名字的新模型,使用這個新模型,文章正常保存!
從上知道,是因為我們創建字段的字段名有問題(是否是系統保留字段或者已存在而出現沖突等)而導致雖然sql語句語法正常但仍然無法正常將文章保存。
另外,網絡上的一些類似問題反映來看,如果在創建模型時候只是通過更改添加“模型字段配置(文本模式)”一欄來增加字段而沒有通過點擊“增加字段”按鈕來創建字段,也會出現此類問題,因為這樣子是虛有其表,並沒有正確的創建相應的數據庫表中的字段。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM