Bonjour,
J'ai un script qui me fait une requête sur une base de données (Postgres), et qui me renvoie le résultat dans une variable JSON :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| $connect_string = 'host='.$HYDRO_SERVER.' port='.$HYDRO_PORT.' dbname='.$HYDRO_BASE.
' user='.$HYDRO_USER.' password='.$HYDRO_PASSWORD;
$base = pg_connect($connect_string);
if (!$base) {
$msg = 'Erreur connection !'.pg_last_error($connect_string);
$json = array("success" => false, "msg" => $msg);
}
else {
$sql = 'SELECT nav_id, nav_name FROM navires';
$res = pg_query($sql);
if (!$res) {
$msg = 'Erreur d\'execution de la requête : '.$sql;
$json = array("success" => false, "msg" => $msg);
}
else {
if (pg_num_rows($res) == 0) {
$msg = 'Aucun enregistrement ne correspond à la requête !';
$json = array("success" => true, "res" => $msg);
}
else {
$list = array();
while ($data = pg_fetch_array($res)) {
array_push($list, $data);
}
$json = array("success" => true, "res" => $list);
}
pg_free_result($res);
}
pg_close($base);
} // fin else
echo json_encode($json); |
Le problème, c'est que dans le JSON crée, j'ai les infos résultats en double :
{"success":true,"res":[{"0":"1","nav_id":"1","1":"Pourquoi-pas?","nav_name":"Pourquoi-pas?"},{"0":"2","nav_id":"2","1":"Thalassa","nav_name":"Thalassa"},{"0":"3","nav_id":"3","1":"L'Atalante","nav_name":"L'Atalante"},{"0":"4","nav_id":"4","1":"Le Suro\u00eet","nav_name":"Le Suro\u00eet"},{"0":"5","nav_id":"5","1":"RRS Discovery","nav_name":"RRS Discovery"},{"0":"6","nav_id":"6","1":"R\/V Knorr","nav_name":"R\/V Knorr"},{"0":"7","nav_id":"7","1":"M\/V Arquipelago","nav_name":"M\/V Arquipelago"},{"0":"8","nav_id":"8","1":"NRP Almirante Gago Coutinho","nav_name":"NRP Almirante Gago Coutinho"}]}
A chaque fois, les variables sont mentionnées avec un code 0, 1, et avec le nom de la variable issue de la base de données. Pourquoi ?
Comment modifier le script en conséquence ?
Merci,
Nico
Partager