2013-05-02 76 views
-1

我正嘗試使用函數根據輸入的用戶名獲取用戶的密碼。但是,我似乎無法得到結果是一個字符串。如何將其傳輸到字符串?我只想要存儲在password列中的值。將PDO :: FECH_ASSOC更改爲字符串

這裏是功能

public function get_password($username) { 
    global $pdo; 

    $query = $pdo->prepare("SELECT `password` FROM `users` WHERE `username` = ?"); 
    $query->bindValue(1, $username); 
    $query->execute(); 

    $query->fetch(PDO::FETCH_ASSOC); 

    return $query; 
} 

我想這是因爲我不斷收到一個錯誤,說使用的結果,從這個函數中的參數預計字符串數組給定的,所以我認爲從功能需求的結果是一個字符串,而不是一個數組

編輯:我嘗試添加$query['password']但它返回一個錯誤,說:Cannot use object of type PDOStatement as array

+0

回報$查詢[ 「密碼」]; – 2013-05-02 07:37:53

+0

@Al。如果我這樣做,我得到這個錯誤'不能使用類型PDOStatement的對象作爲數組'' – zachstarnes 2013-05-02 07:39:09

+0

'fetch' ***返回***數據,它不*改變*'$ query'到數據。 – deceze 2013-05-02 07:40:52

回答

1

使用此:

public function get_password($username) { 
    global $pdo; 

    $query = $pdo->prepare("SELECT `password` FROM `users` WHERE `username` = ?"); 
    $query->bindValue(1, $username); 
    $query->execute(); 

    $password = ""; 
    while($row = $query->fetch(PDO::FETCH_ASSOC)) 
    { 
     $password = $row['password']; 
    } 
    return $password; 
} 
0

試試這個

while($row = $query->fetch(PDO::FETCH_ASSOC)) 
{ 
    $password = $row['password']; 
}