Comme breezer mentionné vous d'hôtel devrait utiliser une jointure ici si vous ne frappez une fois que la DB. Il n'est absolument pas nécessaire de faire plusieurs requêtes. En ce qui concerne la structuration des données que je ferais quelque chose comme ceci:
$sutdents = array();
$query = "SELECT * FROM table LEFT JOIN table2 ON table.st_id = table2.st_id";
$result = mysql_query($query, $conn);
$bookFields = array_fill_keys(array(
'bk_id',
'author',
'ISBN'
), null);
$studentFields = array_fill_keys(array(
'st_id',
'st_name',
'st_class'
), null);
$students = array();
while ($sutdent = mysql_fetch_assoc($resouter, MYSQL_ASSOC)){
$stId = $student['st_id'];
if(isset($students[$stId]['books'])){
$students[$stId]['books'][] = array_intersect_key($student, $bookFields);
} else {
$students[$stId] = array_intersect_key($student, $studentFields);
$students[$stId]['books'] = array(array_intersect_key($student, $bookFields));
}
}
return json_encode($students);
évidemment ce format est différent, mais je préfère les choses imbriquées dans des structures logiques. Vous pouvez cependant faire exactement ce que vous saked comme ceci:
$query = "SELECT * FROM table LEFT JOIN table2 ON table.st_id = table2.st_id";
$result = mysql_query($query, $conn);
$bookFields = array_fill_keys(array(
'bk_id',
'author',
'ISBN'
), null);
$studentFields = array_fill_keys(array(
'st_id',
'st_name',
'st_class'
), null);
$students = array();
$books = array();
while ($sutdent = mysql_fetch_assoc($resouter, MYSQL_ASSOC)){
$stId = $student['st_id'];
if(!isset($students[$stId]){
$students[$stId] = array('student' => array_intersect_key(
$student,
$studentFields
));
}
if(!isset($books[$stId])){
$books[$stId] = array();
}
$books[$stId][] = array('book' => array(array_intersect_key($student, $bookFields));
}
// convert these from assoc to numeric arrays so the come as arrays in json
$books = array_values($books);
$students = array_values($students);
// final hash looks like {students: [{student: {}}, {student: {}}], books: [{book: {}}, {book: {}}]}
return json_encode(array('students' => $students, 'books' => $books));
updaed ma réponse un coup d'oeil un me dire comment il casseroles – Breezer