SQL查询后的while循环不能使用PHP

时间:2016-03-03 15:42:44

标签: 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循环只循环一次。如何让它循环遍历每个项目/行一次?

2 个答案:

答案 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'];

    }