我有一个带有'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.";
}
?>
答案 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.";
}