2

I am doing my project in codeigniter. My issues is i will store value for 'game_aspect_details' in json format like

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

for this select query i will decode the json format and check that value in 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;
2
  • 6
    what is your question? Commented Jul 29, 2013 at 11:05
  • i need to decode that json format and i have to get the value 1 and 4 Commented Jul 29, 2013 at 11:11

2 Answers 2

2

First this do see what you are getting in the $row within the foreach by using the print_r().

And I hope that you need to replace the below line

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

With following line:

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

as $row is an array not an object.

EDITED:

foreach ($res as $rows)
{            
    foreach ($rows as $row)
    {            
    ........
    $this->db->where('game_aspect_id',$row['aspect_id']); //here make change
    .....
    }
}
Sign up to request clarification or add additional context in comments.

15 Comments

Array ( [0] => Array ( [aspect_id] => 1 ) [1] => Array ( [aspect_id] => 4 ) )
when i print_r($row) inside foreach i can get like this
@sangee then use the code that is in the answer that will work for you sure.
that means u r telling me to use like this
@sangee yes, the edited code check that and use that. at the place of dot dot use you code.
|
1

You are doing some things wrong, see the comments in this code:

...
//$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;
}
...

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.