mysql 临时表代替in的方法
public function infengzhuang($ziduanstr = '', $table = '',$whereziduan='',$instr = '', $wherestr = '')
{
$haomiao = $this->get_millisecond();
if (empty($instr)) {
$sql = 'select ' . $ziduanstr . ' from ' . $table . $wherestr;
$tmplist = $this->commongetinfo($sql);
} else {
$inattr = explode(',', $instr);
$repairinattr = array();
foreach ($inattr as $k => $v) {
$repairinattr[] = '(' . $v . ')';
}
$repairinstr = join(',', $repairinattr);
$sql = 'create temporary table tmp' . $haomiao . '(id int(4) primary key)';
$this->commonexecute($sql);
$sql = 'insert into tmp' . $haomiao . ' values ' . $repairinstr;
$this->commonexecute($sql);
if (!empty($wherestr)) {
$wherestr = ' and ' . $wherestr;
}
// $sql='select * from tmp' . $haomiao;
// $list=$this->commongetinfo($sql);
// print_r($list);
// exit();
$sql = 'select ' . $ziduanstr . ' from ' . $table . ',tmp' . $haomiao . ' where ' . $table . '.'.$whereziduan.'=tmp' . $haomiao . '.id' . $wherestr;
$tmplist = $this->commongetinfo($sql);
}
return $tmplist;
}
当然也可以直接返回临时表
$wheredingdanstr = 'dingdanleixing="销售订单"';
$dianpuid='2,3,4'
$dingdanlists = $this->infengzhuang('fukuanquerenshijian,dingdan,jiesuanprice,shangpinid,dingdanzhuangtai,shangjiabeizhu,dianpuid ', $tablelist['dingdanlist_table'],'dianpuid',$dianpuid,$wheredingdanstr);