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 查询返回列名和整数的主要内容,如果未能解决你的问题,请参考以下文章
MySQL PDO fetchAll 作为具有整数索引的数组
在 IF 语句中具有多个条件的 PDO MySQL SELECT
Javascript 到 PHP PDO 到 MySQL 查询返回空