2012-09-21 107 views
0

我有這樣的代碼:PHP/MySQL的while循環只顯示最後一個記錄

include('config.php'); 

$result = mysql_query("SELECT * FROM system"); 
while($row = mysql_fetch_array($result)) { 
    $name_system = $row['name']; 
    $value_system = $row['value']; 

    if($name_system=='website_register' AND $value_system==1) 
     {$register_system = 1;} 
    else 
     {$register_system = 0;} 

    if($name_system=='website_offline' AND $value_system==1) 
     {$offline_system = 1;} 
    else 
     {$offline_system = 0;} 
} 

我的問題是,循環只會顯示「系統」表中的最後一個記錄的事實。

+0

在哪裏,你是如何顯示的?這不在您發佈的代碼中。 – DCoder

+0

您的代碼中沒有輸出任何東西 – Baba

+0

您的代碼只是反覆設置一些變量。所以在循環之後,最後一次迭代確定這些變量的值。但是,我看不到任何輸出或顯示。 – Sirko

回答

0

這是草率的,但它會告訴你發生了什麼,因爲它經過循環:

include('config.php'); 

$result = mysql_query("SELECT * FROM system"); 
while ($row = mysql_fetch_array($result)) { 
    $name_system = $row['name']; 
    $value_system = $row['value']; 

    if($name_system=='website_register' AND $value_system==1) 
    {$register_system = 1;} 
    else 
    {$register_system = 0;} 

    if($name_system=='website_offline' AND $value_system==1) 
    {$offline_system = 1;} 
    else 
    {$offline_system = 0;} 

    print "$name_system, $value_system, $register_system, $offline_system<br />"; 
} 
1

我的問題是,僅環則顯示從

最後一個記錄的事實

不,問題是循環顯示什麼也沒有。之後的顯示會在循環外部的代碼中執行,因此當光標瀏覽整個表格時只會執行一次,並且只有最後一行保留在要打印的$row中。

移動echoprint裏面的循環的代碼,它會工作。

0

你的問題是你重寫每次在同一個變量上的最後一個值。相反,將它作爲一個新的單元格添加到數組中。例如每一個地方而不是做

$register_system = 1; 

$register_system[] = 1; 

在最後你可以做print_r($register_system)看到所有的值。你會注意到數組的鍵是0,1,...你可以考慮使用$row['name']爲重點,像這樣:

$register_system[$row['name']] = 1 

假設,當然這些不同的值。

+0

我想定義$ register_system和$ offline_system變量,然後在其他文件中使用它們進行比較和其他操作。 – user1689166

+0

你可以做到這一點(只使用'全球')。儘管我會推薦使用類並使屬於這個類的$ register_system和offline_system數組,這是從您的其他文件實例化的。 – Noam

+0

我該怎麼做? – user1689166

0

echo/print需要在循環內部。

0

嘗試使用突破的地方,有必要...

使用標誌變量的邏輯...

+0

你是什麼意思?我不太明白你的答案。 – Jeremy1026

+0

if $ row ['name'] =='website_register'AND $ row ['value'] == 1) {$ register_system [] = 1;} .....當這個條件成立時......他應該使用break來擺脫循環... – Freelancer

+0

因此,對於提出的問題不是一個真正的答案,而只是一個更好的程序流程的建議? – Jeremy1026

0

您可能需要您的物品存放到一個數組。

$result = mysql_query("SELECT * FROM system"); 
while($row = mysql_fetch_array($result)) { 
    $name_system[] = $row['name']; 
    $value_system[] = $row['value']; 

    if($row['name']=='website_register' AND $row['value']==1) 
     {$register_system[] = 1;} 
    else 
     {$register_system[] = 0;} 

    if($row['name']=='website_offline' AND $row['value']==1) 
     {$offline_systemp[] = 1;} 
    else 
     {$offline_system[] = 0;} 
} 

這樣,你可以通過做一些像打印出的每個值:

for ($i = 0; $i < count($name_system); $i++) { 
    echo 'Name system is: '.$name_system[$i]; 
} 
相關問題