2012-01-15 140 views
0

我有一個'狀態'列的數據庫,要麼讀'積極'或'非活動'。
沒有結果返回elseif PHP查詢

我想根據狀態是「活動」還是「非活動」返回不同的文本,並且我正在使用if...elseif...

如果狀態爲「有效」,則消息顯示完美。這也會提示數據庫將狀態字段更新爲「非活動狀態」 - 同樣,這也是完美的。

但是,如果我重新加載頁面,使用我知道狀態爲'inactive'的鍵,則不顯示任何內容。

<?php 

if (isset($_GET['key'])) { 
    $key = $_GET['key']; 

    include("db.php"); 

    $download_query="SELECT * FROM sales WHERE key='$key'"; 
    [email protected]_query($download_query); 
    [email protected]_fetch_array($download_result, MYSQL_ASSOC); 
    $productid=$download_row['productid']; 
    $datecreated=$download_row['datecreated']; 
    $dateaccessed=$download_row['dateaccessed']; 
    $status=$download_row['status']; 

    if ($status=="active") { 
     $download_updatestatus_query="UPDATE `sales` SET `status`='inactive' WHERE `key`='$key'"; 
     [email protected]_query($download_updatestatus_query) or die (mysql_error()); 
     echo "Go ahead and download file."; 
    } 
    else if ($status=="inactive") { 
     echo "You may have downloaded this before."; 
    } 
} 
else { 
    echo "Sorry, no key provided."; 
} 

?> 
+1

嘗試所有if之前的var_dump($狀態)。你看到了什麼? – wikp 2012-01-15 18:46:36

+0

嘗試從你的代碼中刪除'@',應該出現一些錯誤。 – Nazariy 2012-01-15 18:47:07

+0

你有什麼理由爲什麼要壓制錯誤? – PeeHaa 2012-01-15 18:47:23

回答

0

您在elseif後有額外的}。嘗試:

else if ($status=="inactive") { 
echo "You may have downloaded this before."; 
} 

else { 
+0

這是以前的支架:) – wikp 2012-01-15 18:47:27

+0

的確是!雖然MrGlass會是個好地方! – Martin 2012-01-15 18:49:43

+0

sry。一個正確的嵌套結構有助於:) – MrGlass 2012-01-15 18:51:47

0

你想確保mysql_query是不假,包含運行mysql_num_rows一些結果,你開始獲取數據之前。

同時將$_GET的值傳遞給MySQL Query未經驗證是非常糟糕的想法。

if (isset($_GET['key'])) 
{ 
    //You have to make sure that provided value is safe to use in mysql query 
    $key = mysql_real_escape_string($_GET['key']); 

    include("db.php"); 

    $download_query = "SELECT * FROM sales WHERE key='$key'"; 

    $download_result = mysql_query($download_query); 

    // Check result 
    if (!$download_result) 
     die('Invalid query: ' . mysql_error()); 

    if($download_result && mysql_num_rows($download_result) > 0) 
    { 
     $download_row = mysql_fetch_assoc($download_result); 
     $productid = $download_row['productid']; 
     $datecreated = $download_row['datecreated']; 
     $dateaccessed = $download_row['dateaccessed']; 
     $status = $download_row['status']; 

     if ($status == "active") 
     { 
      $download_updatestatus_query = "UPDATE `sales` SET `status`='inactive' WHERE `key`='$key'"; 

      $download_updatestatus_result = mysql_query($download_updatestatus_query) or die (mysql_error()); 

      echo "Go ahead and download file."; 
     } 
     else if ($status == "inactive") 
     { 
      echo "You may have downloaded this before."; 
     } 
    } 
    else 
    { 
     echo 'No results found'; 
    } 
} 
else 
{ 
    echo "Sorry, no key provided."; 
} 
+0

謝謝,Nazariy。這是'沒有找到結果的消息',而不是'NULL'。但是,URL中指定的密鑰肯定存在於數據庫中,並且絕對具有「非活動」狀態。我也收到錯誤信息:'警告:mysql_num_rows():提供的參數不是第13行中/home/martinj/public_html/download.php中的有效MySQL結果資源。「# – Martin 2012-01-15 18:59:01

+0

你的密鑰是怎樣的? – Nazariy 2012-01-15 19:01:35

+0

我已添加基本驗證 – Nazariy 2012-01-15 19:10:10