简体   繁体   中英

I need help in json response in php

Here is my code:

<?php
while ($row = mysqli_fetch_assoc($searching_user))
{
    $salon_name = ucfirst($row['service_name']);
    $salon_id = ucfirst($row['id']);
    $salon_address = ucwords($row['address']);
    $salon_area = ucwords($row['area']);
    $salon_city = ucwords($row['city']);
    $salon_specialty = ucwords($row['specialty']);
    $img = $row['image_url'];
    $response["error"] = FALSE;
    $response["service_name"] = $salon_name;
    echo json_encode($response);
}
?>

after this I'm getting the response in this format

{"error":false,"service_name":"Mike salon"}{"error":false,"service_name":"Michel salon"} {"error":false,"service_name":"Michel salon"}{"error":false,"service_name":"Mike Salon"} {"error":false,"service_name":"Etta Salon"}

I simply want this response like this

[ {"error":false,"service_name":"Mike salon"},{"error":false,"service_name":"Michel salon"},{"error":false,"service_name":"Michel salon"},{"error":false,"service_name":"Mike Salon"}, {"error":false,"service_name":"Etta Salon"}]

Kindly help me to get a proper response form for json . Thanks

Don't json_encode() the single results, but put them into an array and finally json_encode() that:

<?php
$response = [];
while ($row=mysqli_fetch_assoc($searching_user)) {
  $salon_name = ucfirst($row['service_name']); 
  $salon_id = ucfirst($row['id']);
  $salon_address = ucwords($row['address']);
  $salon_area = ucwords($row['area']);
  $salon_city = ucwords($row['city']);
  $salon_specialty = ucwords($row['specialty']);
  $img = $row['image_url'];

  $response[] = [
    'error' => FALSE,
    'service_name' => $salon_name,
    // you may want to add more attributes here...
  ];
}
echo json_encode($response);

I personally suggest to shorten this:

<?php
$response = [];
while ($row=mysqli_fetch_assoc($searching_user)) {
  $response[] = [
    'error'           => FALSE,
    'service_name'    => ucfirst($row['service_name']),
    'salon_id'        => $row['id'],
    'salon_address'   => ucwords($row['address']),
    'salon_area'      => ucwords($row['area']),
    'salon_city'      => ucwords($row['city']),
    'salon_specialty' => ucwords($row['specialty']),
    'img'             => $row['image_url'],
  ];
}
echo json_encode($response);

You are trying to encode single results, Try to create a array will all the results and encode it out side the loop.

while ($row=mysqli_fetch_assoc($searching_user)) {
    $salon_name = ucfirst($row['service_name']);
     $salon_id = ucfirst($row['id']);
     $salon_address = ucwords($row['address']);
     $salon_area = ucwords($row['area']);
     $salon_city = ucwords($row['city']);
     $salon_specialty = ucwords($row['specialty']);
     $img = $row['image_url'];
     $response["error"] = FALSE;
     $response["service_name"]=$salon_name;
     // Added this line
     $responses[] = $response;
}
//Encode all results
 echo json_encode($responses );

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM