PHP:循环,重复第一个项目,而不是循环所有项目?

PHP:循环,重复第一个项目,而不是循环所有项目?

问题描述:

我有一个请求项目列表的MySQL查询。PHP:循环,重复第一个项目,而不是循环所有项目?

我为他们取,并希望显示每个项目与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

+0

添加print_r($ curso);在'for'循环之前,先看看$ curso ['nombreCurso']字段上的内容? –

+4

为什么不按照PHP文档中的描述来做呢?当你这样做的时候,这确实是错误的。你不会在结果集中前进。 – trincot

+0

您正在提取一个关联数组,该数组返回一行。而不是'for',你应该说'while while($ row = mysqli_fetch_assoc($ buscarCurso)){... echo stuff ...}'你不需要得到一行数 –

你的循环应该从结果在每个迭代上设置来获取。标准方法(如在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>'; 
} 
+0

谢谢!有用!但似乎是循环2次,我的意思是一次少于完成。 – Rosamunda

+0

您必须删除在循环外部调用'mysqli_feth_assoc'的原始行。 – trincot

+0

我明白了,谢谢! – Rosamunda

您需要查询结果的循环。在这种情况下,您只会得到一个结果,并通过该结果循环三次。

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

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

首先使用准备语句块SQL注入比检查这个代码

<?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

完整答案的人不喜欢! :d –