2012-10-19 159 views
0

我的數據庫生成用戶名的簡單數組使用PDO

id username 
1 xxx 
2 bbb 
3 vvv 
4 bbbbbb 

我需要爲

array('xxx','bbb','vvv','bbbbb'); 

使用PDO我需要獲取用戶名從數據庫&作出這樣的數組,是用於檢查輸出用戶名存在

+3

您不想獲取所有用戶名,然後檢查用戶名是否存在。相反,使用你的數據庫函數來驗證。例如:'SELECT username FROM table WHERE LOWER(username)= LOWER(variable)' – Daniel

+0

@Daniel是的,但在這種情況下,我需要生成一組用戶名。即時通訊使用一些阿賈克斯呼籲動態用戶名檢查 – ramya

+0

我仍然認爲你應該重新考慮。獲取一堆用戶名在驗證方面是不實際的。 – Daniel

回答

3

如果您只是檢查用戶名是否存在,那麼最好修改您的查詢以做到這一點,而不是返回超額數據:

$query = $pdo->prepare("SELECT `id` FROM `users` WHERE `username` = ? LIMIT 1"); 
$query->execute(array($username_to_test)); 

if ($query->rowCount() == 1) 
{ 
    // user exists in table 
} 

如果你碰巧需要用戶名的數組,這樣做如下:

$usernames = array(); 
$query = $pdo->query("SELECT `username` FROM `users`"); 
while(($row = $query->fetchObject()) != null) 
    $usernames[] = $row->username; 
+0

是的,但我需要一個數組。陣列( 'XXX', 'BBB', 'VVV', 'BBBBB'); – ramya

+0

@ramya:看到我更新的答案。 –

+0

此給定輸出..... Array([0] => xxx [1] => vvvv [2] => bbbb [3] => cccc [4] => aaaa [5] => mmmmm) – ramya

0
$pdo = new PDO($dsn,$user,$pass); 
$pdos = $pdo->prepare('select username from mytablename'); 
$pdos ->execute(); 
$results = array(); 
while ($row = $pdos->fetch(PDO::FETCH_ASSOC)) { 
    $results[] = $row['username']; 
} 
var_dump($results); 

設置數據庫DSN $,$用戶和$ according to doc面前經過。

+0

這個給出的輸出..... Array([0] => xxx [1] => vvvv [2] => bbbb [3] => cccc [4] => aaaa [5] => mmmmm) – ramya

+0

我需要輸出密鑰。即數組('xxx','bbb','vvv','bbbbb'); – ramya

+0

是的,它是一樣的。 – palmic

0

做的正是你問:

$query = $dbh -> prepare("SELECT username from users"); 
if ($query -> execute()){ 
    $user_array = $query -> fetch(PDO::FETCH_ASSOC); 
} 

蒂姆·庫珀的回答可能是一個更好的解決方案,但。