PHP PDO mySQL查询返回列名和整数

时间:2013-10-27 11:37:06

标签: php mysql arrays pdo

我对数据库的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。我也不想要这些。

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

谢谢,

4 个答案:

答案 0 :(得分:7)

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

  

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

根据您的要求,它应该是:

  

PDO :: FETCH_ASSOC:返回按结果集中返回的列名索引的数组

fetch_style

  

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

Reference:

答案 1 :(得分: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

答案 2 :(得分:1)

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

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

  

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

     

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

     

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

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

将获取类型更改为FETCH_ASSOC

答案 3 :(得分:0)

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

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