2016-07-23 7 views
0

Ich habe eine SELECT-Abfrage in MySQL, dass ich in phpMyAdmin getestet haben und es zeigt zwei Datensätze, in denen der gleiche Benutzer (Nummer 1), zwei Rollen hat (noAutorizado und Admin):PHP: For-Schleife zeigt das gleiche Ergebnis zweimal anstelle der zwei verschiedenen Ergebnisse?

Jetzt , Ich habe versucht, das in einer Liste mit einer for-Schleife zu zeigen, und es zeigt das erste Ergebnis zweimal anstelle der beiden Ergebnisse. Also anstatt zu zeigen, noAutorizado und Admin, es zeigt noAutorizado und noAutorizado.

Was ist los mit der Schleife?

$conectar2 = mysqli_connect(HOST, USER, PASS, DATABASE); 
$buscarRoles = "SELECT userID, nombreRol 
      FROM rolesUsuarios 
      WHERE userID='$uid' 
      "; 
$roles = mysqli_query($conectar2,$buscarRoles);  

    if($roles){ 
     $rol = mysqli_fetch_array($roles); 
     $cantRegistros = mysqli_num_rows($roles); 
     for ($i=0; $i < $cantRegistros; $i++) { 
      echo $rol['nombreRol'].'<br>'; 
     } 
    } else ... 
+1

'mysqli_fetch_array' holt eine Rolle –

+1

while ($ rol = mysqli_fetch_array ($ Rollen)) {echo $ rol [ 'nombreRol']‚.
'; } – JYoThI

Antwort

1

Das ist, weil das Array in der zurückgegebenen Ergebnismenge eine einzelne Zeile darstellt. Sie müssen die Funktion mysqli_fetch_array erneut ausführen, um den nächsten Datensatz zu erhalten. Beispiel:

while($rol = mysqli_fetch_array($roles)) { echo $rol['nombreRol'].'<br>'; } 
3

Ich glaube, Sie die Ergebnisse in einer Schleife zu holen brauchen

$conectar2 = mysqli_connect(HOST, USER, PASS, DATABASE); 
$buscarRoles = "SELECT userID, nombreRol 
      FROM rolesUsuarios 
      WHERE userID='$uid'"; 
$roles = mysqli_query($conectar2,$buscarRoles);  

if($roles){ 
    while($rows=mysqli_fetch_object($roles)){ 
     echo $rows->nombreRol.'<br>'; 
    } 
} 
Verwandte Themen