Никаких результатов не найдено для elseif PHP-запроса - PullRequest
0 голосов
/ 15 января 2012

У меня есть база данных со столбцом «status», который читает «активный» или «неактивный».

Я хотел бы вернуть другой текст в зависимости от того, является ли статус «активным» или «неактивным», и для этого я использую 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 голосов
/ 15 января 2012

Вы должны убедиться, что 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 голосов
/ 15 января 2012

У вас есть дополнительный } после вашего elseif. попробуйте:

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

else {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...