-2

CodeIgniter でクエリを実行したい:

クエリは

"SELECT * FROM td_album,td_image
     WHERE td_album.album_id=td_image.album_id
          AND td_album.album_id='$id'
          AND (td_image.image_name='$name' OR td_image.image_id='$image_id');"

アクティブ レコードを使用して CI でこのクエリを作成しました。

$query = $this->db->select('*')
                        ->from('td_image')
                        ->join('td_album', 'td_album.album_id = td_image.album_id')
                        ->like('td_image.image_id', $descp)
                        ->or_like('td_image.image_name', $descp)
                        ->like('td_album.album_id',$a_id)
                        ->get('', $this->limit, $this->offset);

しかし、私は問題に直面しています。id1との 2 つのアルバムがあるとし2ます。アルバムの画像のみを表示したい1。上記の CI AR クエリは、すべての画像の結果を返しています。つまり、両方のアルバムの画像を表示していますが、これは起こるべきではありません。

実際には、album_id が 1 のアルバムの画像を表示する必要があります。

ここで、上記の CI AR クエリが次の略であることに気付きました。

"SELECT * FROM td_album,td_image
         WHERE td_album.album_id=td_image.album_id
              AND td_album.album_id LIKE'$id'
              OR td_image.image_name LIKE'$name' AND td_image.image_id LIKE'$image_id';"

したがって、すべての画像が表示されます。私の要件は、1 つのアルバムの画像のみを表示することです。

したがって、この MYSQL クエリと同等の CI AR クエリが必要です

"SELECT * FROM td_album,td_image
             WHERE td_album.album_id=td_image.album_id
                  AND td_album.album_id LIKE'$id'
                  AND (td_image.image_name LIKE'$name' OR td_image.image_id LIKE'$image_id');"

最後のクエリを CI AR に変換するにはどうすればよいですか? を持つクエリが必要like() or_like()です。

4

2 に答える 2

3

数日前にこの問題に遭遇しました。Active Recordsは()でのwhere句のグループ化をサポートしていないため、where句のその部分を変数に入れる必要があります。

$where = "(td_image.image_name LIKE'$name' OR td_image.image_id LIKE'$image_id')";
$this->db->where($where);
于 2013-02-09T03:46:19.507 に答える
1

おそらく、$ this-> db-> query('YOUR QUERY HERE');を使用することができます。複雑なクエリの場合。

すなわち

$My_SQL_Query = $this->db->query("SELECT * FROM td_album,td_image WHERE td_album.album_id=td_image.album_id AND td_album.album_id LIKE'$id' AND (td_image.image_name LIKE'$name' OR td_image.image_id LIKE'$image_id')");

 foreach($My_SQL_Query->result() as $Row){
    echo "-------<br />".print_r($Row)."<br />-------<br /><br />";
 }

これがお役に立てば幸いです:)

于 2013-02-09T03:56:13.480 に答える