PHP:for循环显示两次相同的结果而不是两个不同的结果?

时间:2016-07-23 10:35:53

标签: php mysql for-loop

我在MySQL中有一个SELECT查询,我在phpMyAdmin中进行了测试,它显示了两个记录,其中同一个用户(编号1)有两个角色( noAutorizado admin ):

现在,我试图在使用for循环的列表中显示它,并且它显示第一个结果两次而不是两个结果。 因此,它不是显示 noAutorizado admin ,而是显示 noAutorizado noAutorizado

循环有什么问题?

$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 ...

2 个答案:

答案 0 :(得分:3)

我认为您需要在循环中获取结果

$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>';
    }   
} 

答案 1 :(得分:1)

那是因为数组在返回的结果集中表示一行。您需要再次执行mysqli_fetch_array函数以获取下一条记录。例如:

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