在激活时更改状态,然后将数据库中的状态更改为非活动状态
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");
}
这是一个有效的代码,但我希望它能兼顾两种方式。当我点击无效时,它会将其更改为有效,反之亦然。我也用案例试过但没有运气
>
答案 0 :(得分:4)
也许您只想按$sid
过滤它并使用CASE
来切换status
UPDATE profile
SET status = (CASE WHEN status = 'active' THEN 'inactive' ELSE 'active' END)
WHERE id = $id
答案 1 :(得分: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");
}
答案 2 :(得分: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注入。
答案 3 :(得分:-1)
如果有效和无效是所有可用选项,我的意思是如果没有任何第三种选择,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')