2010-08-24 185 views
1

我有一個pdo函數從數據庫中獲取用戶名和用戶標識。當我運行這個函數時,我得到了不同的結果。Print_r和foreach給出不同的結果

的print_r給出

陣列([ID] => 58 [用戶名] =>阿卜杜拉)

和foreach給我

5-5A-一個

有一排它與數據庫中的pdo查詢匹配。

public function getUserCredentials($userName, $password){ 
$this->db = new Dbpdo_Database(); 
$this->db->connect(); 
try{ 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    $stmt = $dbh->prepare("SELECT 
      ID 
      FROM 
      administrators 
      WHERE 
      username = :username 
      AND 
      user_password = :password 
      LIMIT 1"); 


    $stmt->bindParam(':username', $userName, PDO::PARAM_STR); 
    $stmt->bindParam(':password', $password, PDO::PARAM_STR); 
    } 

    $stmt->execute(); 

    /*** fetch the results ***/ 
    $results = $stmt->fetchAll(PDO::FETCH_ASSOC); 

    return $results; 

    /*** close the database connection ***/ 
    //$dbh = null; 
} 
catch(PDOException $e){ 
    echo $e->getMessage(); 
    } 
} 

$results = $mydb->getUserCredentials($userName, $password); 

foreach ($results as $row){ 
echo $row['ID'].'-'.$row['username']; 
} 

print_r($results); 

任何提示什麼是錯的將不勝感激。提前致謝。

回答

2

您的$results數組是一維的 - 它有一個ID和一個用戶名。您的foreach正在尋找一個二維數組,每行包含一個ID和一個用戶名。將其更改爲:

foreach($results as $key => $value) { 
    echo $key . '-' . $value; 
} 

,你應該得到:

ID-58 
username-abdullatif 
+0

,如果我想的id只是結果會怎麼做呢? – CoderX 2010-08-24 11:00:54

+0

'$ results ['ID']'(如果返回多個匹配行,這可能會改變,這取決於您的腳本) – 2010-08-24 12:43:35

相關問題