无法显示阵列结果

时间:2019-03-28 15:26:01

标签: php mysql codeigniter

我得到了以下数组。现在我得到了单个记录,但是当它们是数组记录时,它就不起作用了。我尝试使用OR条件,但无法正常工作。

$this->db->get_where('genre',array('genre_id'=>$row['genre_id']))->row()->name;
//I get Follwoing Records
Array(
[0] => Array
    (
        [movie_id] => 7
        [title] => Raaz
        [genre_id] => 8 // it display the name
        [actors] => []
        [trailer_url] => https://drive.google.com/
    )
[1] => Array
    (
        [movie_id] => 8
        [title] => Tribute
        [genre_id] => ["2","5","20"] // it doesn't display the name
        [actors] => []
        [trailer_url] => https://drive.google.com/
    )

我尝试了以下代码

$this->db->get_where('genre',array('genre_id'=>$row['genre_id']))->row()->name;

上面的代码适用于0索引,但不适用于1索引数组

1 个答案:

答案 0 :(得分:1)

您可以使用where_in,但不能与get_where一起使用,您需要在此处使用替代项,而不是get_where

示例:

您可以在此处进行替换,例如:

$this->db->select('name');
$this->db->from('genre');
if(is_array($row['genre_id'])){ // if result is in array
    $this->db->where_in('genre_id',$row['genre_id']);    
}
else{ // for single record.
    $this->db->where('genre_id',$row['genre_id']);
}
$query = $this->db->get();
print_r($query->result_array()); // will generate result in an array

编辑:

调试后,您将以字符串形式获取此值["2","5","20"],因此可以修改以下代码:

$genreID = intval($row['genre_id']); // 
if($genreID > 0){ 
    $this->db->where('genre_id',$row['genre_id']);    
}
else{ 
   $genreID = json_decode($row['genre_id'],true);
   $this->db->where_in('genre_id',$genreID);    
}

CI Query Builder