Tuesday, February 14, 2012

How to manipulate a rowset data from sql to php


I have asked a question about how to retrieve data from different tables in sql How to get data from 4 tables in 1 sql query?



When I run the query for my sample data I get 3 rows, anyway being many-to-many relationship between courses and categories I will always get more rows for same course.



My question is how do I handle this data in PHP? I get an array and what I want would be something like:




Array (
[0] => stdClass Object (
[name] => course name
[tutor] => tutor name
[categories] => Array ( categories here )
);



Should I just fetch the data from the categories in a foreach loop after I fetch a course? That would mean bad performance for large amount of data.

1 comment:

  1. Should I just fetch the data from the categories in a foreach loop after I fetch a course? That would mean bad performance for large amount of data.


    I think that depends on what you will do with the data. If it's just to show to user, i think it's a good idea paginate the results.

    But if you really need to fecth all data in one query and store this in one big array, you can do something like this:

    $last_id = -1;
    for( $x=0; $x < count($myArray); $x++ ) {
    if( $last_id != $myArray[$x]['id'] ) {
    //course changed, do something!
    }
    //do more stuff...
    $last_id = $myArray[$x]['id'];
    }

    ReplyDelete