2013-04-29 58 views
11

我是新来的使用$ pdo语句,所以可能是简单的东西,我还没有阅读php.net。查询数据库时,我收到重复的结果。PDO返回错误但重复的数据。密钥不在数据库中。

结果:

[0] => Array 
    (
     [umeta_id] => 31 
     [0] => 31 
     [user_id] => 2 
     [1] => 2 
     [meta_key] => fbmeta 
     [2] => fbmeta 
     [meta_value] => someMetaValueStuff; 
     [3] => someMetaValueStuff; 
    ) 

查询很简单:

function getData(){ 
    global $pdo; 
    $query = $pdo->prepare('SELECT * FROM usermeta WHERE meta_key = "fbmeta" LIMIT 0,30'); 
    $query->execute(); 

    return $query->fetchAll(); 
} 

print_r(getData()); 

的问题是,在命名的键(umeta_iduser_idmeta_keymeta_value)确实存在,数字键不要。如何查询返回这些?我如何防止他们被退回?

+0

有人问之前,是我已经手动检查并限制了数据库的小集合,所以重复真的不存在。 – Nukeface 2013-04-29 09:12:14

回答

21

这不是重复,它只是你使用当前FETCH_MODE。要获得关联键只有你需要指定为这样;默认情况下它作为两者提取。

使用像这样:

$query->fetchAll(PDO::FETCH_NUM); // to fetch with numeric indexes 
$query->fetchAll(PDO::FETCH_ASSOC); // to fetch with associative indexes 

fetchAll docs
fetch docs

+2

酷,修复它。太糟糕了,我不能选择2个答案作为回答,你和Yogesh都在同一时间。 – Nukeface 2013-04-29 09:18:29

+0

@Nukeface我认为我的第一个... :)。但你可以接受任何人的回答,它的选择...... :) – 2013-04-29 09:20:26

+1

当计时器倒计时时,你们会很快;)会选择这一个,但是取回文档到了我应该注意到的抓取函数我的第一个透视的差异,并没有。 – Nukeface 2013-04-29 09:21:18

9

这不是重复数据fetchAll返回数值数组中的数据以及关联数组。

Docs

使用此为仅检索关联数组

return $query->fetchAll(PDO::FETCH_ASSOC);