get_result () -> fetch_assoc () всегда возвращает 1 строку

У меня есть этот код php:

public function getcabang(){ $cabang = $this->conn->prepare("SELECT nama_cabang,alamat FROM cabang"); if ($cabang->execute()){ $cbg = $cabang->get_result()->fetch_assoc(); $cabang->close(); return $cbg; } else { return NULL; } } 

но он всегда возвращает 1 строку:

 {"error":false,"cabang":{"nama_cabang":"Senayan","alamat":"Pintu 1 Senayan"}} 

хотя он имеет более 1 строки в таблице

Вам нужно итерации, чтобы получить каждую строку, вот пример из php.net :

 $query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 50,5"; if ($result = $mysqli->query($query)) { /* fetch associative array */ while ($row = $result->fetch_assoc()) { printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]); } /* free result set */ $result->free(); } 

В вашем случае это будет:

 public function getcabang(){ $cabang = $this->conn->prepare("SELECT nama_cabang,alamat FROM cabang"); if ($cabang->execute()){ $cbg = array(); $result = $cabang->get_result(); while($row = $result->fetch_assoc()) { $cbg[] = $row; } $cabang->close(); return $cbg; } else { return NULL; } } 

Кроме того, лучшим решением может быть использование mysqli_fetch_all (доступно только с mysqlnd)