Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
没有返回elseif PHP查询的结果_Php_Mysql_If Statement - Fatal编程技术网

没有返回elseif PHP查询的结果

没有返回elseif PHP查询的结果,php,mysql,if-statement,Php,Mysql,If Statement,我有一个带有“状态”列的数据库,该列显示“活动”或“非活动”。 我想根据状态是“活动”还是“非活动”返回不同的文本,为此我使用if…和elseif… 如果状态为“活动”,则消息将完美显示。这也会提示数据库将状态字段更新为“非活动”-同样,这工作正常。 但是如果我重新加载页面,使用我知道状态为“inactive”的键,则不会显示任何内容 <?php if (isset($_GET['key'])) { $key = $_GET['key']; include("db.ph

我有一个带有“状态”列的数据库,该列显示“活动”或“非活动”。

我想根据状态是“活动”还是“非活动”返回不同的文本,为此我使用
if…
elseif…

如果状态为“活动”,则消息将完美显示。这也会提示数据库将状态字段更新为“非活动”-同样,这工作正常。

但是如果我重新加载页面,使用我知道状态为“inactive”的键,则不会显示任何内容

<?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.";
}

?>

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

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

else {

在开始获取数据之前,您应该通过运行
mysql\u num\u rows
来确保
mysql\u query
不是false,并且包含一些结果

在没有验证的情况下将
$\u GET
值传递给MySQL查询也是一个非常糟糕的主意

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.";
}

在所有if之前尝试var_dump($status)。您看到了什么?尝试从代码中删除
@
,可能会出现一些错误。出现错误的原因是什么?同时缩进代码以查看发生了什么。@Nazary我收到的错误消息是:警告:mysql\u fetch\u array():提供的参数在第10行的/home/martinj/public_html/download.php中不是有效的MySQL结果资源。它是前面if:)sry的括号。一个适当的嵌套结构有助于:)@Martin您可以尝试使用mysql_error函数输出sql得到的错误吗?谢谢,nazary。这将得到“未找到结果”消息,而不是“NULL”。但是URL中指定的密钥肯定存在于数据库中,并且肯定处于“非活动”状态。我还收到错误消息:
警告:mysql\u num\u rows():在第13行的/home/martinj/public\u html/download.php中,提供的参数不是有效的mysql结果资源。
我添加了基本验证密钥是数字、字母和标点符号的随机组合,长度为12个字符。我刚刚看到你对$\u GET的评论。如果不太麻烦的话,你能详细说明一下吗?这是一种我已经使用了一段时间的技术,但也许我不应该这样做!你好,纳扎里。通过上面的代码,我得到了以下信息:
警告:mysql_real_escape_string()[function.mysql real escape string]:在/home/martinj/public_html/download.php的第6行警告:mysql_real_escape_string()[function.mysql real escape string]:无法在第6行的/home/martinj/public_html/download.php中建立到服务器的链接
问题必须在数据库连接中,请确保您的脚本可以访问MySQL数据库,可能缺少密码。