$mysqli_query = mysqli_query($mysqli, "SELECT * FROM ".$snt_stone." ");
while($result = mysqli_fetch_array($mysqli_query)){
$DatabaseID = $result['DatabaseID'];
$ItemName = $result['ItemName'];
$ItemStatus = $result['ItemStatus'];
$ItemCategory = $result['ItemCategory'];
}我的数据库中有多个东西,但是由于某些原因,我的while循环只循环一次。如何才能让它循环遍历每一项/每行一次?
发布于 2016-03-03 23:58:08
你的问题是你不了解while循环是如何工作的。
while($result = mysqli_fetch_array($mysqli_query)){
$DatabaseID = $result['DatabaseID'];
}此循环将$result['DatabaseID'];的值赋给变量$DatabaseID。当您第二次循环时,$DatabaseID的值再次更改。
因此,您基本上要做的就是遍历SELECT查询的结果,每次都将获取的值提供给一组特定的变量,并在每次执行循环时覆盖它们。
您可以通过运行以下命令来检查逻辑错误:
while($result = mysqli_fetch_array($mysqli_query)){
echo $result['DatabaseID'];
echo $result['ItemName'];
echo $result['ItemStatus'];
echo $result['ItemCategory'];
$DatabaseID = $result['DatabaseID'];
$ItemName = $result['ItemName'];
$ItemStatus = $result['ItemStatus'];
$ItemCategory = $result['ItemCategory'];
}您将看到echo给出了select的所有结果,但是由于您一直覆盖变量,所以只保存了最后一个值。
编辑
我认为对您的问题最简单的解决方案是将您需要的值保存为数组,然后使用该数组。最简单的方法是:
$mysqli_query = mysqli_query($mysqli, "SELECT * FROM ".$snt_stone." ");
while($result = mysqli_fetch_array($mysqli_query)){
$DatabaseID[] = $result['DatabaseID'];
$ItemName[] = $result['ItemName'];
$ItemStatus[] = $result['ItemStatus'];
$ItemCategory[] = $result['ItemCategory'];
}然后,您可以运行print_r($DatabaseID)来打印数组内容。
这种构造数组使用起来相当不方便,请查看php的数组手册,并创建一个最能满足您需要的数组:http://php.net/manual/en/function.array.php
当然,这也取决于您稍后要在代码中如何处理这些值。
发布于 2016-03-03 23:47:38
$mysqli_query = mysqli_query($mysqli, "SELECT * FROM ".$snt_stone." ");
while($result = mysqli_fetch_array($mysqli_query)){
echo $result['DatabaseID'];
echo $result['ItemName'];
echo $result['ItemStatus'];
echo $result['ItemCategory'];
}https://stackoverflow.com/questions/35776591
复制相似问题