我在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 ...
答案 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>'; }