对于ifif PHP查询,没有返回任何结果

时间:2012-01-15 18:42:36

标签: php mysql if-statement

我有一个带有'status'列的数据库,其中包含“active”或“inactive”。

我想根据状态是“有效”还是“无效”来返回不同的文字,我正在使用if...elseif...

如果状态为“有效”,则信息显示完美。这也会提示数据库将状态字段更新为“非活动” - 再次,这是完美的。

但如果我重新加载页面,使用我知道状态为“非活动”的密钥,则不显示任何内容。

<?php

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

    include("db.php");

    $download_query="SELECT * FROM sales WHERE key='$key'";
    $download_result=@mysql_query($download_query);
    $download_row=@mysql_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'";
        $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 "Sorry, no key provided.";
}

?>

2 个答案:

答案 0 :(得分:0)

你的elseif之后还有一个额外的}。尝试:

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

else {

答案 1 :(得分: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.";
}