2012-09-23 64 views
1

所以我想從MySQL獲得一些數據,並用它來創造一些條件。這是我的代碼,但它只顯示mysql的最後一條記錄。PHP充分利用MySQL的數據,然後使用它在不同的操作

$result = mysql_query("SELECT * FROM system") or die(mysql_error()); 
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; 

然後,如果我想呼應的另一頁「$ offline_system」或「$ register_system」,忽略了最低展現真實的數據。

+1

爲什麼另一個頁面會知道您定義的這兩個局部變量?你如何到達另一頁?你是否從你發佈的這段代碼重定向? – Artless

+0

嘗試使用** PDO **加載項來完成相同的任務。 – hjpotter92

+0

此代碼位於名爲「gloabl.php」的頁面中。我試圖顯示結果的index.php中使用此代碼:」); \t echo(「Register:$ register_system」); ?> – user1689166

回答

0

你可以讓這個更簡單。如果您正在查找數據庫中的特定值,則可以查詢它們,然後分配值。

例如

<?php 

$registerResult = mysql_fetch_row(mysql_query("SELECT value FROM system WHERE name = 'website_register'")); 
$offlineResult = mysql_fetch_row(mysql_query("SELECT value FROM system WHERE name = 'website_offline'")); 

$registerSystem = ($registerResult[0] ? 1 : 0); 
$offlineSystem = ($offlineResult[0] ? 1 : 0); 

?> 
+0

這工作完美!非常感謝! – user1689166

2

$value_system後關閉while循環。這意味着所有記錄將被提取並存儲在$name_system$value_system中,但是循環將覆蓋前一個變量,因此只有最後一條記錄存儲在該變量中。

這似乎是一個不完整的代碼。你可以做的是將這個右括號進一步移動到你希望爲每條記錄做的過程的最後。

$result = mysql_query("SELECT * FROM system") or die(mysql_error()); 
while($row = mysql_fetch_array($result)) { 

$name_system = $row['name']; 
$value_system = $row['value']; 
} // you closed the WHILE loop here. 

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; 

我想,你的代碼是這樣的:

$result = mysql_query("SELECT * FROM system") or die(mysql_error()); 
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; 

// my imagination i was talking about: 
if ($offline_system) echo 'The system is offline<br />'; 
else echo 'The system is online<br />'; 
if ($register_system) echo 'The registration is online<br />'; 
else echo 'The registration system is offline'; 

} // curly brace MOVED. 
+0

有沒有其他方法使用這兩個變量而不在循環中?或者也許不要使用循環。我需要一種方法從mysql獲取數據。 – user1689166

+0

我相信它必須在一個循環中,這些是MYSQL記錄。你不知道哪一個會首先返回(如果它是'website_register'或'website_offline')。所以,只需使用'while'循環,並檢查'$ name_system'的值是什麼。 – rationalboss

+0

但是我不能在我的每一個動作中使用整個代碼..例如我需要檢查$ register_system == 1是否在表單中,我是否想寫出整個代碼? – user1689166

0

如果你希望數據是在你需要存儲在某個地方多頁可用。 SESSION如果該數據對小 SQLITE或平面文件,如果它是更大的 在這樣的情況下,你需要看每個選項的多少內存和時間的使用和選擇了一個最便宜的。

+0

嗯..我是新的PHP,我真的不知道該怎麼做.. – user1689166

0

使用$_SESSION變量,像這樣: 無論你有$register_system,就變成$_SESSION['register_system'],它可以在下一頁爲$_SESSION['register_system']上訪問。

同樣對於$offline_system,它將是$_SESSION['offline_system']並在下一頁作爲$_SESSION['offline_system']訪問。