建站幫助

誠信合作, 高質專業!

Phpcms v9關鍵詞為空時插入數據庫報Duplicate錯誤的Bug修正方法

2019-06-13 16:44:13 瀏覽 我要評論

最近不知道大家發現沒,在Phpcms v9管理后臺在添加標題后不會自動獲取關鍵詞了,這是因為Phpcms官方的分詞服務器(http://tool.phpcms.cn/api/get_keywords.php)掛了,于是造成了內置的分詞api接口(api.php?op=get_keywords)報錯,自然不能獲取到關鍵詞了,于是引發了關鍵詞為空時插入數據庫報Duplicate錯誤的Bug。

先看看報錯提示:

MySQL Query : INSERT INTO `cmsyou_sql`.`v9_keyword`(`keyword`,`siteid`,`pinyin`,`videonum`) VALUES ('','1','','1')

MySQL Error : Duplicate entry '' for key 'PRIMARY'

MySQL Errno : 1062

Message : Duplicate entry '' for key 'PRIMARY'

這個報錯字面的意思是:不能重復插入為空的字段,也就是當關鍵詞為空的時候,Phpcms還是執行了$keyword_db->insert保存數據的函數,造成錯誤。經過CMSYOU檢查,發現錯誤來源于內容模型的關鍵字字段的update函數,加上一個判斷就好。

Phpcms v9關鍵詞為空時插入報錯:Duplicate entry

具體修正方法:

修改/phpcms/modules/content/fields/keyword/update.inc.php文件:

if (!$r = $keyword_db->get_one(array('keyword'=>$v, 'siteid'=>$siteid))) {

$letters = gbk_to_pinyin($v);

$letter = strtolower(implode('', $letters));

$tagid = $keyword_db->insert(array('keyword'=>$v, 'siteid'=>$siteid, 'pinyin'=>$letter, 'videonum'=>1), true);

} else {

$keyword_db->update(array('videonum'=>'+=1'), array('id'=>$r['id']));

$tagid = $r['id'];

}

$contentid = $this->id.'-'.$this->modelid;

if (!$keyword_data_db->get_one(array('tagid'=>$tagid, 'siteid'=>$siteid, 'contentid'=>$contentid))) {

$keyword_data_db->insert(array('tagid'=>$tagid, 'siteid'=>$siteid, 'contentid'=>$contentid));

}

unset($contentid, $tagid, $letters);

修改為:

if($v!=''){

if (!$r = $keyword_db->get_one(array('keyword'=>$v, 'siteid'=>$siteid))) {

$letters = gbk_to_pinyin($v);

$letter = strtolower(implode('', $letters));

$tagid = $keyword_db->insert(array('keyword'=>$v, 'siteid'=>$siteid, 'pinyin'=>$letter, 'videonum'=>1), true);

} else {

$keyword_db->update(array('videonum'=>'+=1'), array('id'=>$r['id']));

$tagid = $r['id'];

}

$contentid = $this->id.'-'.$this->modelid;

if (!$keyword_data_db->get_one(array('tagid'=>$tagid, 'siteid'=>$siteid, 'contentid'=>$contentid))) {

$keyword_data_db->insert(array('tagid'=>$tagid, 'siteid'=>$siteid, 'contentid'=>$contentid));

}

unset($contentid, $tagid, $letters);

}

修改后記得在管理后臺更新緩存之后再測試,歡迎留言與CMSYOU一起探討CMS!

延伸閱讀:

Phpcms v9刪除文章不能同步刪除相關關鍵詞數據的修正方法

Phpcms v9關鍵詞為空時插入報錯:Duplicate entry '' for key 'PRIMARY'

我要收藏
點個贊吧

相關閱讀

本月熱門

精選推薦

在線客服

掃一掃,關注我們

掃一掃,關注我們
穿越火线官方网站
网球比分板 24足球比分网 誉彩彩票群 广告分销赚钱app 安徽无为麻将作弊器 金冠彩票安卓 用电脑怎么做兼职赚钱吗 面对面二人麻将 球探比分即时比分网篮球 大邦商城怎么赚钱 好游赚钱吗 足球比分网 江西时时彩 百度街景拍照怎么赚钱 gta地堡挂机赚钱 足球指数比分