繁体   English   中英

SQL查询后的While循环无法正常工作PHP

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM