我想在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);
但我遇到了问题。假设我有两张ID为1
和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';"
所以它显示所有图像。我的要求是只显示一张专辑的图像。
所以,我需要CI AR查询等同于这个MYSQL查询
"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()
的查询。
答案 0 :(得分:3)
我刚刚遇到这个问题。 Active Records不支持在()中对where子句进行分组,因此您需要将where子句的那一部分放在变量中。
$where = "(td_image.image_name LIKE'$name' OR td_image.image_id LIKE'$image_id')";
$this->db->where($where);
答案 1 :(得分:1)
也许你可以使用$ this-> db->查询('你在这里查询');对于复杂的查询。
即
$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 />";
}
希望这有用:)