0

このURLを使用してデータベースから何かを削除しようとしています:

siteurl.com/mail.php?action=delete&mail_id=10

このコードで:

if ($action == delete) { 
    if(isset($_GET['id'])) { 
        $deleteid = $_GET['id'];
        $sql = "DELETE FROM mail WHERE mail_id = ".$deleteid." LIMIT 1";
        $query = mysql_query($sql);      
        header('Location: '.$_SERVER['HTTP_REFERER'].' ');
        exit(); 
    }
}

しかし、それは機能せず、エラーが表示されます:Query was empty

どうしたの?

4

3 に答える 3

2

アクションは取れましたか?ID を取得する代わりに、メール ID を取得する必要があります。

$_GET['action']  
$_GET['mail_id']
于 2012-10-15T03:29:53.397 に答える
2

mail_idURLで使用していますがid、PHPコードで使用しています。両方の場所で同じものを使用すると、機能します。

ただし、これは非常に重要です。記述されたコードには、SQL インジェクションとして知られる重大なセキュリティ上の問題があります。mysql_*関数は非推奨なので、代わりにmysqli_*and/orを使用する方法を学びPDO、SQL インジェクション攻撃を受ける可能性がはるかに低くなるように、準備済みステートメントを関数と共に使用してください。

于 2012-10-15T03:31:31.473 に答える
0

クエリ文字列では、変数名を として渡していますmail_idが、取得中にはid. 使用する必要があり、変数値mail_idを取得していません。この の代わりに action使用する必要があります。したがって、最終的にコードは次のようになります$_GET['action'] == delete$action == delete

if ($_GET['action'] == delete) { 
    if(isset($_GET['mail_id'])) { 
        $deleteid = $_GET['mail_id'];
        $sql = "DELETE FROM mail WHERE mail_id = ".$deleteid." LIMIT 1";
        $query = mysql_query($sql);      
        header('Location: '.$_SERVER['HTTP_REFERER'].' ');
        exit(); 
    }
}
于 2012-10-15T03:38:35.600 に答える