【问题标题】:PHP PDO retrieves duplicate dataPHP PDO 检索重复数据
【发布时间】:2013-07-06 05:48:15
【问题描述】:

我在使用 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}]

【问题讨论】:

    标签: php


    【解决方案1】:

    默认情况下,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);
    

    【讨论】:

    • 它工作正常,但只返回一个对象,应该使用 select 从恢复中返回三个对象
    • 我不知道你的评论是什么意思。我用一些代码示例编辑了答案
    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-22
      • 1970-01-01
      • 2013-08-03
      • 2010-12-14
      • 1970-01-01
      • 2014-12-12
      • 1970-01-01
      相关资源
      最近更新 更多