2012-01-15 354 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