PHP:For循环重复第一项而不是循环遍历所有项目?

时间:2016-07-25 17:21:01

标签: php mysql for-loop

我有一个请求项目列表的MySQL查询。

我取了它们并希望用for循环显示每个项目,但它只显示重复的第一个项目,而不是每个项目。

为什么?

<?php 

$conectar = mysqli_connect(HOST, USER, PASS, DATABASE);
$query = "  SELECT cursoID, nombreCurso, estadoCurso
            FROM cursos 
            WHERE estadoCurso='abierto'";
$buscarCurso = mysqli_query($conectar,$query);
$curso=mysqli_fetch_assoc($buscarCurso);
$totalRows = mysqli_num_rows($buscarCurso); //There are 3 rows of results

echo $totalRows;

for ($i=0; $i < $totalRows; $i++) { 
    echo '<br>';
    echo $curso['nombreCurso'];
    echo '<br>';
}
?>

预期结果是:

Curso 1

Curso 2

Curso 3

相反,我得到了

Curso 1

Curso 1

Curso 1

3 个答案:

答案 0 :(得分:7)

您的循环应该在每次迭代时从结果集中获取。标准方式(如PHP documentation中给出的许多示例中所示)是您在while条件下执行此操作:

$totalRows = mysqli_num_rows($buscarCurso); //There are 3 rows of results
echo $totalRows;
while ($curso=mysqli_fetch_assoc($buscarCurso)) {
    echo '<br>';
    echo $curso['nombreCurso'];
    echo '<br>'; 
}

答案 1 :(得分:0)

您需要一个循环来查询结果。在这种情况下,您将获得一个结果并循环该结果3次。

<?php
while($curso = mysqli_fetch_assoc($buscarCurso)) {

    // Do some stuff
    echo '<br />' . $curso['nombreCurso'] . '<br />';
}
?>

答案 2 :(得分:0)

首先使用准备语句进行块SQL注入,而不是检查此代码

red

干杯!!!