2010-08-24 5 views
1

J'ai une fonction pdo qui récupère les noms d'utilisateur et les ID utilisateur de la base de données. Quand je cours la fonction j'obtiens des résultats différents.Print_r et foreach donnant des résultats différents

print_r donne

Array ([ID] => 58 [nom d'utilisateur] => Abdullatif)

et foreach me donne

5-5a-a

Il y a une ligne qui correspond à la requête pdo dans la base de données.

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); 

Tout indice quant à ce qui est faux serait très apprécié. Merci d'avance.

Répondre

2

Votre tableau $results est unidimensionnel - il a un ID et un nom d'utilisateur. Votre foreach recherche un tableau à deux dimensions, chaque ligne contenant un ID et un nom d'utilisateur. Changer à:

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

et vous devriez obtenir:

ID-58 
username-abdullatif 
+0

si je voulais juste le résultat de l'id comment pourrais-je faire cela? – CoderX

+0

'$ results ['ID']' (cela peut changer si plus d'une ligne correspondante est renvoyée, en fonction de votre script) –

Questions connexes