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