【问题标题】:PHP PDO mySQL query returns column names and integersPHP PDO mySQL 查询返回列名和整数
【发布时间】:2013-11-06 05:03:44
【问题描述】:

我对数据库的 PDO 查询将不必要的值返回到数组中。

Array
(
    [contentID] => 9
    [0] => 9
    [type] => operations
    [1] => operations
    [type_alts] => pages
    [2] => pages
    [url] => ctt-partners
    [3] => ctt-partners
    [title] => CTT Partners
    [4] => CTT Partners
    [subtitle] => 
    [5] => 
    [online] => 1
    [6] => 1
    [access] => 0
    [7] => 0
    [req] => 0
    [8] => 0

)

我在数组之后没有返回相同的整数字段以及名称。例如[0] => 9, [1] => operations。我也不想要这些。

他们为什么在这里,我怎样才能摆脱他们。

谢谢,

【问题讨论】:

  • 你的抓取类型是什么?我们可以看看你的 fetch 语句吗?

标签: php mysql arrays pdo


【解决方案1】:

您当前的提取类型必须是:

PDO::FETCH_BOTH(默认):返回一个由列名和 0 索引列号索引的数组,如结果集中返回的那样

根据您的要求,应该是:

PDO::FETCH_ASSOC:返回一个按列名索引的数组,如结果集中返回的那样

fetch_style

控制如何将下一行返回给调用者。此值必须是 PDO::FETCH_* 常量之一,默认为 PDO::ATTR_DEFAULT_FETCH_MODE 的值(默认为 PDO::FETCH_BOTH)。

Reference:

【讨论】:

    【解决方案2】:

    所以只需强制 PDO 执行此操作 ...

    try {
        $pdo = new PDO(...);
        $pdo->query('SELECT * FROM foo');
    
        foreach ($pdo->query('SELECT * FROM foo', PDO::FETCH_ASSOC) as $row) {
            ...
        }
    } catch (PDOException $e) {
        // error handling
    }
    

    看看不同的 PDO 获取模式。 http://www.php.net/manual/en/pdostatement.setfetchmode.php

    【讨论】:

      【解决方案3】:

      看看PDOStatement::fetch()的文档:

      第一个参数定义下一行将如何返回给调用者。有可用的预定义常量:

      ◦ PDO::FETCH_ASSOC:返回一个按列名索引的数组 在您的结果集中返回

      ◦ PDO::FETCH_BOTH(默认):返回由两列索引的数组 结果集中返回的名称和索引为 0 的列号

      ...
      http://www.php.net/manual/pdostatement.fetch.php

      您可能使用FETCH_BOTH 或不带任何默认为FETCH_BOTH 的参数调用该函数。

      将获取类型更改为FETCH_ASSOC

      【讨论】:

        【解决方案4】:

        我更喜欢使用它,因为我需要它返回一个 JSON 文件:

         $conn = new PDO("...","...","...");
         $stmt = $conn->prepare($query);
         $stmt->execute();
         $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
        

        【讨论】:

          猜你喜欢
          • 2017-01-25
          • 1970-01-01
          • 2012-11-28
          • 2015-09-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-03
          • 2015-01-29
          相关资源
          最近更新 更多