1

アクティブなときにステータスを変更し、dbのステータスを非アクティブとして変更します

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使用したいだけですCASEstatus

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

アクティブと非アクティブがすべての利用可能なオプションである場合、3 番目のオプションがない場合は、John Woo の提案がそれを実行します。しかし、ここに別のアプローチがあります。

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

3 番目のオプションがある場合は、when 句に追加することをお勧めします。

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

また

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