获得指定分类下的推荐商品的问题?

2016-07-07 15:04 来源:www.chinab4c.com 作者:ecshop专家

找到lib_goods.php这个文件里的get_category_recommend_goods这个函数,看到有这样的一行


  1. if (!empty($cats))
  2. {
  3. $sql .= " AND (" . $cats . " OR " . get_extension_goods($cats) .")";
  4. }
复制代码


这样判断后不知道是不是有BUG,$cats并没有指定列名等于$cats这个变量。
是不是应该改成

  1. $sql .= " AND (g.cats_id = " . $cats . " OR " . get_extension_goods($cats) .")";
复制代码



请版主回答下。谢谢!

回答:


那就看你怎么调用这个函数了,调用的时候 第二个参数 要写成SQL类型的字符串

and ('' or '条件')

function get_extension_goods($cats)
{
static $extension_goods_array = '';
if ($extension_goods_array !== '')
{
return db_create_in($extension_goods_array, 'g.goods_id');
}
else
{
$sql = 'SELECT goods_id FROM ' . $GLOBALS['ecs']->table('goods_cat') . " AS g WHERE $cats";
$extension_goods_array = $GLOBALS['db']->getCol($sql);
return db_create_in($extension_goods_array, 'g.goods_id');
}
}

你仔细看看这个函数

有什么问题吗?

如果一个页面多次调用get_extension_goods就会出问题,第二次无法改变他的值。所以以后执行的都是if下面第一个语句。



$children = get_children($cat_id);
get_category_recommend_goods('best',$children)
你直接这么调用不就行了

或者如果该类别下没有子类的话,干脆就

get_category_recommend_goods('best',' g.cat_id =18 ');

留个记号学习一下