不知道是客戶(hù)自身數(shù)據(jù)的問(wèn)題還是方維程序的問(wèn)題,今天有客戶(hù)反映,在瀏覽別人的 個(gè)人中心->寶貝 這個(gè)頁(yè)面時(shí),點(diǎn)擊右邊分享的寶貝時(shí),如果該寶貝是被喜歡的,就會(huì)出現(xiàn)數(shù)據(jù)庫(kù)查詢(xún)錯(cuò)誤:
該訪問(wèn)鏈接是:
http://www.xxxxxxx.com/note.php?action=g&sid=12645&id=6757
錯(cuò)誤信息:
sql語(yǔ)句很明顯的錯(cuò)誤,是在in()括號(hào)中最后一個(gè)值后面多了一個(gè)“,”號(hào),
這條查詢(xún)語(yǔ)句的位置在:
core/service/share.service.php文件的 public function getCollectShareByShare($share_id,$num = 20)函數(shù)中,
注意下面紅色字體
if(count($uids) > 0)
{
$share_ids = array();
$res = FDB::query(‘SELECT GROUP_CONCAT(DISTINCT sgi.share_id
ORDER BY sgi.share_id DESC SEPARATOR /’,/’) AS share_ids,sgi.uid
FROM ‘.FDB::table(‘user_collect’).’ AS uc
INNER JOIN ‘.FDB::table(‘share_goods_index’).’ AS sgi ON sgi.share_id = uc.share_id AND sgi.share_id <> ‘.$share_id.’
WHERE uc.c_uid IN (‘.implode(‘,’,$uids).’) GROUP BY sgi.uid LIMIT 0,’.$num);
while($data = FDB::fetch($res))
{
$share_ids = explode(‘,’,$data['share_ids']);
$share_ids[] = (int)current($share_ids);
}
$share_ids = array_unique($share_ids); //源代碼中,只是過(guò)濾掉了數(shù)組中的重復(fù)值
$share_ids = array_filter($share_ids); //這句代碼是我后來(lái)添加的,過(guò)濾掉了數(shù)組中的空值,這樣程序就可以正常執(zhí)行了
if(count($share_ids) > 0)
{
$list = FDB::fetchAll(‘SELECT share_id,uid,content,collect_count,comment_count,create_time,cache_data FROM ‘.FDB::table(‘share’).’ WHERE share_id IN (‘.implode(‘,’,$share_ids).’) LIMIT 0,’.$num);
$list = ShareService::getShareDetailList($list);
}
不管這個(gè)問(wèn)題是不是客戶(hù)由于操作數(shù)據(jù)庫(kù)失誤導(dǎo)致的,我想都應(yīng)該對(duì)查詢(xún)得到的數(shù)據(jù)數(shù)組,進(jìn)行空值過(guò)濾。
新聞熱點(diǎn)
疑難解答
圖片精選