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


PHP: for loop showing same result twice instead of the two distinct results?

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

现在,我尝试使用for循环在列表中显示这一点,它将第一个结果显示两次,而不是两个结果。因此,它没有显示noAutorizadoadmin,而是显示noAutoriza和no Autorizado

循环出了什么问题?

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

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

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

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

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