1

これを使用してIDを選択し、更新に渡そうとしています

$query = $this->db->query("SELECT GROUP_CONCAT(a.sponsor_id) as sponstr FROM (select sponsor_id from sponsor  WHERE (pay_success = 'yes')AND (end_date_time > NOW()) and ((country_id = 1 and state_id = 24) or city_id = 123)
order by rand() limit 0,10) a");

    if($query->num_rows()>0)
    {
     foreach($query->result() as $sponsorids)
     {

        $data['se_count'] = 0;
        $this->db->where_in('sponsor_id',$sponsorids->sponstr);
        $this->db->update('sponsor',$data);

     }
     }

ただし、すべての ID が更新されるわけではなく、最初の ID のみが更新されます。

where_in は以下のコードを生成します

 WHERE sponsor_id IN ('5,4,2,3,1')

私はそれがあるべきだと思います

  WHERE sponsor_id IN (5,4,2,3,1)

私はここで何かを見逃していますか、それとも明らかに私が知っている何か間違ったことをしていますか. 助けてください

4

1 に答える 1

4

そこに配列を渡す必要があります。だから合格しない$sponsorids->sponstrexplode(',', $sponsorids->sponstr)

また、DB設計の決定が悪いようです。時間をかけて、多対多の概念を見てください。

于 2013-06-19T01:49:02.417 に答える