我对数据库的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
。我也不想要这些。
为什么他们在这里,我怎么能摆脱他们。
谢谢,
答案 0 :(得分:7)
您当前的提取类型必须是:
PDO :: FETCH_BOTH(默认值):返回由结果集中返回的列名和0索引列号索引的数组
根据您的要求,它应该是:
PDO :: FETCH_ASSOC:返回按结果集中返回的列名索引的数组
fetch_style
控制下一行将如何返回给调用者。该值必须是PDO :: FETCH_ *常量之一,默认值为PDO :: ATTR_DEFAULT_FETCH_MODE(默认为PDO :: FETCH_BOTH)。
答案 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索引列号
您可能使用FETCH_BOTH
或没有任何默认为FETCH_BOTH
的参数调用该函数。
将获取类型更改为FETCH_ASSOC
。
答案 3 :(得分:0)
我更喜欢使用它,因为我需要返回一个JSON文件:
$conn = new PDO("...","...","...");
$stmt = $conn->prepare($query);
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);