2010-08-24 143 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

相关问题