2010-07-16 162 views
5
$GetUid = $dbConnect->prepare("SELECT UID FROM users WHERE username = :username"); 
$GetUid->execute($RegisterData3); 
$UserID = $GetUid->fetch(); 

为什么它返回的数组不是字符串?PHP PDO提取返回一个数组?

的var_dump( '$用户名')说

array 
    'UID' => string '45' (length=2) 
    0 => string '45' (length=2) 

应该

array 
    'UID' => string '45' (length=2) 

更新* 怎么样的0?它从哪里来?感谢回复。

回答

13

您没有指定fetch_style参数。它默认返回FETCH_BOTH,这是一个数组。以下是选项以及如何指定它: http://php.net/manual/en/pdostatement.fetch.php

编辑:此外,它将始终返回一个数组,即使只有一列,因为一行可以包含多个属性。您可以使用FETCH_ASSOC,然后指定您的列名以获取数据,或者,如果您像使用fetch()一样使用该列,则会按列名和索引0列索引编号索引该数组。

+0

那么0的东西呢?它从哪里来。再次感谢。 – 2010-07-16 12:15:54

+0

ooooooo我明白了。 thanks2 soryy为新手问题:D – 2010-07-16 12:17:19

+1

尝试再次做您的查询,除了说SELECT * FROM用户而不是SELECT UID FROM用户。结果(如果你的表中有两列)应该是这样的:array'UID'=> string'45'(length = 2)0 => string'45'(length = 2)OtherData1 => string '12'(长度= 3)1 =>字符串'12'(长度= 3)其中第三和第四行是第二列(名称和值由我组成) 而且不会有StackOverflow如果不是针对新手的问题;) – rownage 2010-07-16 12:23:09

2

如果您只想获得该列,则需要使用PDO的fetchColumn()方法。

2

结果集是逐行提取的,即使该行包含单个列