$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循环只循环一次。如何让它循环遍历每个项目/行一次?
答案 0 :(得分:2)
您的问题是您不了解while循环的工作原理。
replaceAll()
此循环为变量while($result = mysqli_fetch_array($mysqli_query)){
$DatabaseID = $result['DatabaseID'];
}
提供$result['DatabaseID'];
的值。第二次循环时,$DatabaseID
的值再次更改。
因此,您基本上执行的操作是运行$DatabaseID
查询的结果,并且每次将您获取的值提供给特定变量组,每次循环时都会覆盖它们。
您可以运行以下命令检查逻辑错误:
SELECT
你会看到echo给出了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'];
}
然后您可以运行$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'];
}
来打印数组内容。
这样构建的数组使用起来相当不方便,请查看php关于数组的手册并创建一个最能满足您需求的手册:http://php.net/manual/en/function.array.php
当然,这也取决于您以后在代码中对这些值的处理方式。
答案 1 :(得分:-1)
$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'];
}