PHP:For循环重复第一项而不是遍历所有项?
我有一个MySQL查询,它请求一个项目列表 我为它们提取数据,并希望用for循环显示每个项目,但它只显示重复的第一个项目,而不是每个项目。 为什么?PHP:For循环重复第一项而不是遍历所有项?,php,mysql,for-loop,Php,Mysql,For Loop,我有一个MySQL查询,它请求一个项目列表 我为它们提取数据,并希望用for循环显示每个项目,但它只显示重复的第一个项目,而不是每个项目。 为什么? 预期结果是: 库索1 库索2 库索3 相反,我得到了 库索1 库索1 Curso 1您的循环应该从每次迭代的结果集中获取。标准方法(如中给出的许多示例)是在while条件下执行此操作: $totalRows = mysqli_num_rows($buscarCurso); //There are 3 rows of results echo $
预期结果是:
库索1
库索2
库索3
相反,我得到了
库索1
库索1
Curso 1您的循环应该从每次迭代的结果集中获取。标准方法(如中给出的许多示例)是在
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>';
}
$totalRows=mysqli_num_rows($buscarCurso)//共有3行结果
echo$totalRows;
而($curso=mysqli_fetch_assoc($buscarCurso)){
回声“
”;
echo$curso['nombreCurso'];
回声“
”;
}
查询结果需要一个循环。在本例中,您将只得到一个结果,并在该结果中循环3次
<?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!!');
}
}
?>
干杯 添加打印资源($curso);在执行
for
循环之前,首先查看$curso['nombreCurso']字段上的内容?为什么不按照PHP文档中的说明执行此操作?当你这样做的时候,它确实是错的。您不会在结果集中向前移动,而是获取一个关联的数组,该数组返回一行。你应该说,while($row=mysqli\u fetch\u assoc($buscarCurso)){…echo stuff…},而不是for
,
你不需要获得行数,在询问之前似乎没有做过多少研究。非常感谢。它起作用了!但似乎循环两次,我的意思是比完成所需时间少一次。你必须删除循环外调用mysqli\u feth\u assoc
的原始行。完整回答人们不喜欢的问题!!:D
<?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!!');
}
}
?>