1.问题遇到的现象和发生背景
新建一个数组
$arrCatNavs = db_factory::get_table_data ( '*', 'data_task', " uid = '$gUid' and service_status='2'", 'service_id asc', '', '', 'cat',3600 );
$arrCats = array_keys($arrCatNavs);
$cat_string = implode ( ',', $arrCats );
2.问题相关代码,请勿粘贴截图
比较 a.giftname中数据是否在数组$cat_string中
$strWhere .= " and a.giftname in(.'$cat_string'.)";
3.运行结果及报错内容
执行结果为空,问题在此行括号内,数据格式不对,需要完善
4.我的解答思路和尝试过的方法
$strWhere .= " and a.giftname in('$cat_string')"; //返回空值
$strWhere .= " and a.giftname in ('.cat_string.') " ; //返回空值
$strWhere .= " and a.giftname in ('6-0','7-0-1' ) " ; //正确,是我想要的样子,但是我做不出来,希望高手朋友指点一下,感谢!!!
$strWhere .= " and a.giftname in('" + $cat_string + "')";
implode时应该组成SQL字符串的形式,直接逗号那么就变算式了,题主对比下下面的代码输出就清楚了
$arrCats = array('6-0','7-0-1' );
$cat_string = implode( ",", $arrCats);////////////错误的组合
$strWhere = " and a.giftname in($cat_string)";
echo $strWhere.'<br>';
$cat_string ="'". implode( "','", $arrCats)."'";//////////////////////////////正确组合
$strWhere = " and a.giftname in($cat_string)";
echo $strWhere;