1

I have the following function in PHP, I am trying to get array in a specific format mentioned below but to no success, I am selecting a specific column in the mysql table than contains a json value like

{ "lat": "-0.008668899503063161", "lng": "0.0025903204871857714" } 

This is the function

 function test() { $pdo = new PDO ("mysql:host=localhost;dbname=dbname","user", "secret"); $statement=$pdo->prepare("SELECT test FROM merchants WHERE user_id = 1"); $statement->execute(); $data = array(); while( $row = $statement->fetch(PDO::FETCH_ASSOC) ) { $data[] = json_decode( $row['test'] ); } return $data ; } 

I am expecting the following result

['lat' => -0.008668899503063161,'lng' => 0.0025903204871857714,] 

But this is what I keep getting

[{"lat":"-0.008668899503063161","lng":"0.0025903204871857714"}] 
4
  • You're looping over all the results of the query. You get a nested object for each row. Commented Jul 27, 2021 at 18:01
  • What do you expect the result to be if the query returns multiple rows? Commented Jul 27, 2021 at 18:02
  • I have only a single item in the database table that i want to get Commented Jul 27, 2021 at 18:05
  • 2
    Then why are you looping and pushing onto an array? Fetch the row and decode it. Commented Jul 27, 2021 at 18:07

2 Answers 2

2

Don't push onto an array if you just want a single value.

function test() { $pdo = new PDO ("mysql:host=localhost;dbname=dbname","user", "secret"); $statement=$pdo->prepare("SELECT test FROM merchants WHERE user_id = 1"); $statement->execute(); row = $statement->fetch(PDO::FETCH_ASSOC) ) if ($row) { $data = json_decode( $row['test'], true ); } else { $data = null; } return $data ; } 
Sign up to request clarification or add additional context in comments.

Comments

0

I managed to do it like this

 'merchants.location' => [ 'lat' => $data['lat'], 'lng' => $data['lng'] ] 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.