1

我在使用 PHP (PDO) 时遇到这种情况;

我正在实现一种从 MySql 检索数据并做得很好的方法,但问题是重复数据作为关键骨骼恢复为没有值但其他数据附加更多,留下脚本和图像以获得更多细节;

数据.php

    //read
    public function getData() {
    $statement = $this->db->prepare("select Id,Company_Name,Contact_Name,Contact_Title,Address from contact_details LIMIT 3;");
    $statement->execute();
    if ($statement->rowCount() > 0) {
        $value = $statement->fetchAll();
        return $value;
    }
}

变量检查

在此处输入图像描述

json重复

在此处输入图像描述

预期结果

Data: [{"Id":"1","Company_Name":"Romero y tomillo","Contact_Name":"Alejandra                 Camino","Contact_Title":"Accounting Manager","Address":null}
,{"Id":"2","Company_Name":"Morgenstern Gesundkost","Contact_Name":"Alexander Feuer","Contact_Title":"Marketing Assistant","Address":"Heerstr. 22"}
,{"Id":"3","Company_Name":"Ana Trujillo Emparedados y helados","Contact_Name":"Ana Trujillo","Contact_Title":"Owner","Address":null}]
4

2 回答 2

6

默认情况下,PDO 使用 PDO::FETCH_BOTH 作为其获取结果。这意味着它将每列映射到其名称和“整数”列名称。

检查 fetch_style 参数= http://php.net/manual/en/pdostatement.fetch.php

对于您的预期结果,您将需要使用该PDO::FETCH_ASSOC属性。您可以或将其设置为 pdo 对象上的默认 FETCH_MODE,如下所示:

$this->db->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_ASSOC);

或者您可以为每个 fetch cal 指定它:

$value = $statement->fetchAll(PDO::FETCH_ASSOC);
于 2013-07-08T19:27:52.157 回答
2

根据要求更改 pdo 属性。. .

 $dbConnection = new PDO( 'pgsql:host=' . $host . ';dbname=' . $database, $username, 
 $password, );

 $dbConnection->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

在此处设置/更改 PDO 属性的更多详细信息

于 2020-08-18T07:06:40.923 回答