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

Posted

技术标签:

【中文标题】PHP PDO mySQL 查询返回列名和整数【英文标题】:PHP PDO mySQL query returns column names and integers 【发布时间】: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 语句吗? 【参考方案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);

【讨论】:

以上是关于PHP PDO mySQL 查询返回列名和整数的主要内容,如果未能解决你的问题,请参考以下文章

Php PDO,类方法返回true,而参数中的列名错误?

MySQL PDO fetchAll 作为具有整数索引的数组

在 IF 语句中具有多个条件的 PDO MySQL SELECT

Javascript 到 PHP PDO 到 MySQL 查询返回空

PDO 错误:布尔和整数类型的输入语法无效 - 如果输入为空

PDO 查询mysql返回字段整型变为String型解决方法