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 yourjavascript

今天在使用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」,找處處理自定義模型中生產的附加表內容添加的程序段:
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();
}java

 

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

 

把數據保存到數據庫附加表 `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 1sql

 

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

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

相關文章
相關標籤/搜索