【问题标题】:PHP: for loop showing same result twice instead of the two distinct results?PHP:for循环两次显示相同的结果而不是两个不同的结果?
【发布时间】:2016-07-23 10:35:53
【问题描述】:

我在 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 ...

【问题讨论】:

  • mysqli_fetch_array 获取一个角色
  • while($rol = mysqli_fetch_array($roles)) { echo $rol['nombreRol'].'
    '; }

标签: php mysql for-loop


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-02-12
      • 1970-01-01
      • 2016-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-23
      相关资源
      最近更新 更多