我在codeigniter中做我的项目。我的问题是我将以json格式存储'game_aspect_details'
的值,如
"{"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;
答案 0 :(得分: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
.....
}
}
答案 1 :(得分: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;
}
...