首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP: For循环,它重复第一项,而不是循环遍历所有项?

问PHP: For循环,它重复第一项,而不是循环遍历所有项?
EN

Stack Overflow用户
提问于 2016-07-25 17:21:00
回答 3查看 133关注 0票数 0

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

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

为什么?

代码语言:javascript
复制
<?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>';
}
?>

预期的结果是:

库索1

库索2

Curso 3

相反我得到了

库索1

库索1

库索1

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-07-25 17:24:40

您的循环应该从每次迭代的结果集中获取。标准的方法(在PHP文档中给出的许多例子中)是在while条件下这样做:

代码语言:javascript
复制
$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>'; 
}
票数 7
EN

Stack Overflow用户

发布于 2016-07-25 17:25:35

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

代码语言:javascript
复制
<?php
while($curso = mysqli_fetch_assoc($buscarCurso)) {

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

Stack Overflow用户

发布于 2016-07-25 17:31:13

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

代码语言:javascript
复制
<?php 

$conn = mysqli_connect(HOST, USER, PASS, DATABASE);


$select_cursos = $conn->prepare(" SELECT 
    cursoID, nombreCurso, estadoCurso
    FROM cursos 
    WHERE estadoCurso = ? ORDER BY nombreCurso ASC 
");

$select_cursos->bind_param('s', $nombreCurso);

$nombreCurso = 'abierto'; // This you can get from a $_POST too

if (!$select_cursos->execute()) { // ERROR

    echo('Error');

} else { // OK
    $select_cursos_result = $select_cursos->get_result();
    $select_cursos_count = select_cursos_result->num_rows;

    echo('Found: '.$select_cursos_count);

    if ($select_cursos_count > 0) {
        while ($data = $select_cursos_result->fetch_assoc()) { 
            echo ($data['nombreCurso'].'<br>');
        }
    } else {
        echo ('No data!!');
    }
}

?>

干杯!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38573900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档