2010-07-16 79 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

結果集是逐行提取的,即使該行包含單個列