1

在活动时更改状态,反之亦然,然后将数据库中的状态更改为非活动

if (isset($_GET['id']) && is_numeric($_GET['id']))
{
$id = $_GET['id'];
$result = mysql_query("UPDATE profile SET status='active' WHERE status='inactive' AND id =$id")
or die(mysql_error()); 

header("Location: admin-members.php");
}
else{
header("Location: admin-members.php");
}

这是一个工作代码,但我希望它能够双向工作。当我单击不活动时,它会将其更改为活动状态,反之亦然。我也用案例尝试过,但没有运气

?>

4

4 回答 4

4

也许您只想过滤它$sid并使用它CASE来切换status

UPDATE profile 
SET status = (CASE WHEN status = 'active' THEN 'inactive' ELSE 'active' END)
WHERE id = $id
于 2012-10-23T03:39:43.523 回答
0
    $getStatus =mysql_query(" select status from profile where id =$id") 
or     die(mysql_error());
    $stat = mysql_fetch_assoc($getStatus);
    if($stat['status']== 'inactive')
    {
    $result = mysql_query("UPDATE profile SET status='active' AND id =$id");
    }
    elseif($stat['status']== 'active')
    {
    $result = mysql_query("UPDATE profile SET status='inactive' id =$id");

    }
于 2012-10-23T03:46:19.280 回答
0

您也可以将您的状态作为 $_GET 变量传递,并检查它是否是可接受的值。

if (isset($_GET['id']) && is_numeric($_GET['id']) && in_array($_GET['status'],array('active','inactive')))
{
$id = $_GET['id'];
$status = $_GET['status'];
$result = mysql_query("UPDATE profile SET status='$status' WHERE id =$id")
or die(mysql_error()); 

header("Location: admin-members.php");
}
else{
header("Location: admin-members.php");
}

*从这里你可能想要参数化你的查询以防止 SQL 注入。

于 2012-10-23T03:49:08.937 回答
-1

如果 active 和 inactive 都是可用的选项,我的意思是如果没有任何第三个选项,John Woo 的建议就可以了。然而,这是另一种方法。

UPDATE `profile`
SET `status` = IF(`status`='active','inactive','active')
WHERE `id` = $id

如果有第三个选项,那么您可能希望在 when 子句中添加它:

WHERE `id` = $id AND `status` IN ('active','inactive')

或者

WHERE `id` = $id AND (`status`='active' OR `status`='inactive')
于 2012-10-23T03:47:19.840 回答