![](/img/trans.png)
[英]Nested SQL query in PHP while-loop causes Memory Leak - What are some other solutions?
[英]While-loop after SQL query won't work PHP
$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循环仅循环一次。 如何使它遍历每个项目/行一次?
您的问题是您不了解while循环的工作方式。
while($result = mysqli_fetch_array($mysqli_query)){
$DatabaseID = $result['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/zh/function.array.php
当然,这还取决于您稍后要在代码中使用这些值做什么。
$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'];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.