2

我正在codeigniter中做我的项目。'game_aspect_details'我的问题是我将以json 格式存储值,例如

"{"game_aspect_details":[{"aspect_id":"1"},{"aspect_id":"4"}]}"

对于这个选择查询,我将解码 json 格式并在 foreach 中检查该值。

    $this->db->select('game_aspect_details');
    $this->db->from('share_reviews');
    $this->db->where('review_id',6);
    $query = $this->db->get();
    $result = $query->result();
    $test = $result[0]->game_aspect_details;
    $res = json_decode($test);
    $result_array = array();        
    foreach ($res as $row)
    {            
        $this->db->select('comments');
        $this->db->from('review_ratings');
        $this->db->where('game_aspect_id',$row->game_aspect_details); //here i need
        $query1 = $this->db->get();                            to check 1 and 4 
        $resultReviews['comments'] = $query1->result();
        $result_array[] = $resultReviews;

    }
    print_r($res);
    exit;
4

2 回答 2

2

首先,这确实$row通过foreach使用print_r().

我希望您需要替换以下行

$this->db->where('game_aspect_id',$row->game_aspect_details);

使用以下行:

$this->db->where('game_aspect_id',$row['aspect_id']);

因为$row是数组而不是对象。

编辑:

foreach ($res as $rows)
{            
    foreach ($rows as $row)
    {            
    ........
    $this->db->where('game_aspect_id',$row['aspect_id']); //here make change
    .....
    }
}
于 2013-07-29T11:15:40.277 回答
1

您做错了一些事情,请参阅此代码中的注释:

...
//$test = $result[0]->game_aspect_details; // This does not work since $result is not decoded yet
$res = json_decode($result); // Changed to `$result` instead of `$test`
$res = $res->game_aspect_details; // Instead pick the `game_aspect_details` here, after the decode
$result_array = array();        
foreach ($res as $row)
{            
    $this->db->select('comments');
    $this->db->from('review_ratings');
    $this->db->where('game_aspect_id',$row['aspect_id']); // Changed to `aspect_id`
    $query1 = $this->db->get();
    $resultReviews['comments'] = $query1->result();
    $result_array[] = $resultReviews;
}
...
于 2013-07-29T11:27:43.670 回答