【问题标题】:How to get data in array format in from php mysql database如何从php mysql数据库中获取数组格式的数据
【发布时间】:2023-05-08 06:06:01
【问题描述】:

我在 PHP 中有以下函数,我试图以下面提到的特定格式获取数组,但没有成功,我在 mysql 表中选择了一个特定列,而不是包含类似 json 值的列

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

这是函数

 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 ;

    }

我期待以下结果

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

但这就是我不断得到的

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

【问题讨论】:

  • 您正在遍历查询的所有结果。每行都有一个嵌套对象。
  • 如果查询返回多行,您期望结果是什么?
  • 我在数据库表中只有一个我想要获取的项目
  • 那你为什么要循环并推入一个数组?获取行并对其进行解码。

标签: php mysql arrays


【解决方案1】:

如果您只想要一个值,请不要压入数组。

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 ;
}

【讨论】:

    【解决方案2】:

    我设法做到了这样

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

    【讨论】: