簡體   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