2013-05-13 109 views
0

下面的代码给了我一个包含description的数组$aPDO :: FETCH_COLUMN没有任何东西

$stmt = $dbh->prepare("SELECT description, id 
    FROM money_items"); 
$stmt->execute(); 
$a = $stmt->fetchAll(PDO::FETCH_COLUMN, 0); 
$id = $stmt->fetchAll(PDO::FETCH_COLUMN, 1); 

$id阵列空白。

Array 
    (
    ) 

如果我删除了$a = $stmt->fetchAll(PDO::FETCH_COLUMN, 0);线上,$id阵列出来罚款。我只允许从结果中获取一列吗?

+0

@TobyAllen那么,这为问题提供了一个解决方案。谢谢!但为什么第二个阵列空出来? – jimmy 2013-05-13 20:58:07

+0

第一次调用'fetchAll'会消耗查询中的所有数据,所以当第二次调用的时间到来时,它没有消耗任何东西,因此是空的结果。 – xPheRe 2014-05-21 09:03:51

回答

1

你正在寻找的是

$results = $stmt->fetchAll(PDO::FETCH_ASSOC); 

这将所有列和所有行获取到一个数组 -

http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

虽则回答您的实际问题,我会在语句上调用的FetchAll函数会遍历所有行,因此当您读取第二列时,数组中的内部指针会在最后。

+0

谢谢!是否有命令重新将指针重置为0行? – jimmy 2013-05-13 21:13:26

+0

有但我不知道,如果你通过php.net上的pdo文档看,你应该找到它。 – 2013-05-13 21:16:44