如果/ else,更新表中的值

时间:2012-10-23 03:37:41

标签: php sql database

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

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 个答案:

答案 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')