PHP PDO检索重复数据

时间:2013-07-08 19:23:25

标签: php

我有PHP(PDO)的这种情况;

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

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

变量检验

enter image description here

json重复

enter image description here

预期结果

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

2 个答案:

答案 0 :(得分:3)

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

检查fetch_style param = 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);

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

$value = $statement->fetchAll(PDO::FETCH_ASSOC);

答案 1 :(得分:2)

将pdo属性编码更改为要求。 。

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

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

set / change PDO attribute more detail here