时间:2021-07-01 10:21:17 帮助过:30人阅读
$strpei="select `id`,`name`,`huiyuanjia`,`cpimg`,`shichangjia`,cp_leibie from `".$db_prefix."chanpin` where `ifxianshi`=1 and `cpfl`='".$sid."' "; $dqcp = $Db->FetchAll($strpei);//这是执行sql语句的方法 $strpei.="and id in("; $strpei2=""; foreach($dqcp as $dkey=>$dvalue){//遍历所有商品 $darr=json_decode(urldecode($dvalue['cp_leibie']),true);//把json数据进行解码 for($i=0;$i$dddvalue){//把解码后的数据进行遍历,键名是接收到的商品选项的id if($liestr[$i]==$dddvalue){//子选项的id和json数据里的值一致的话,就把该条数据的id加到条件里 $strpei2.=$dvalue['id'].","; } } } } $strpei.=$strpei2.")";
$peistr 這個可以打印出來看看嗎?
$peistr 這個可以打印出來看看嗎?
$peistr 這個可以打印出來看看嗎?
奇怪定位数据组织形式,奇怪的查询构造方式
奇怪定位数据组织形式,奇怪的查询构造方式
我想到了一个思路,就是$peistr 的数组接收第一次时,只有一个索引有值。接收第二次时,有两个索引有值。那么就可以判断第一次接收的时候,就判断这一个值。第二次接收的时候,就同时判断两个值。以此类推。但是具体怎么写还没想出来
还有一个想法是 接收第一次时,符合条件的产品的id就会加入条件里。接收第二次时,如果在原来的id里有的话,也就是增加了的话。那么就把该条ID加入条件里
我把判断改了一下
if($liestr[$i]==$dddvalue){ $strpei2.=$dvalue['id'].",";}
$where.="$liestr[$i]==$dddvalue &&"; if($i==(count($peistr)-2)){ $where= substr($where,0,-2); } if($where){ $strpei2.=$dvalue['id'].","; }
我把判断改了一下
if($liestr[$i]==$dddvalue){ $strpei2.=$dvalue['id'].",";}
$where.="$liestr[$i]==$dddvalue &&"; if($i==(count($peistr)-2)){ $where= substr($where,0,-2); } if($where){ $strpei2.=$dvalue['id'].","; }
我又想到了一个方法,把子项的id放到一个字段里,用FIND_IN_SET来查询,每查询一次后面就加上 and FIND_IN_SET ,把接收到的子项id在字段里查询,这样就OK了。