0

私のページの1つは、この削除関数を呼び出します

$Sql=mysql_query("SELECT Id FROM products");
    $Result=mysql_fetch_row($Sql);
    $Id=$Result[0];
    DeleteRecords("products","Id",$Id)

関数.phpで私はこの関数を以下で作成しました

function DeleteRecords($Table,$Exp,$Value)
{
if(isset($_GET['delete']))
{
$Sql="DELETE FROM $Table WHERE $Exp=$Value";
$Result=mysql_query($Sql);
if($Result)
    {
        echo "<script>alert('Record Deleted')</script>";
        echo "<script>window.location='products.php';</script>";    
    }
}
}

今私が削除リンクをクリックしているとき:

<a href='".$_SERVER['PHP_SELF']."?delete=$Id'>Delete</a>

最初の行を削除します。$Idに問題があるようです

選択した行を削除する方法を教えてください。

最善の方法は、すべてのことを関数で実行する必要があることです。ページで関数を呼び出すだけです。

4

1 に答える 1

0

すべての製品を選択します。

$Sql=mysql_query("SELECT Id FROM products");

$Id次に、最初の要素のIDを:に割り当てます。

$Id=$Result[0];

次に、関数に渡し$Idます。同じ値が$Valueそこで呼び出されます。

DeleteRecords("products","Id",$Id)

最後に、関数で$_GET['delete']が設定されているかどうかを確認します。そうである場合は$Id、削除クエリで前の結果の最初の要素からを使用します($_GET['delete']:で渡された値の代わりに)。

$Sql="DELETE FROM $Table WHERE $Exp=$Value";

したがって、の値を使用することはありません$_GET['delete']


あなたは書くことができます:

 DeleteRecords("products","Id", $_GET['delete']);

および関数内:

$Value = intval($Value);

if (0 != $Value) {
    $Sql="DELETE FROM $Table WHERE $Exp=$Value";
    $Result=mysql_query($Sql);
    […]

これは、少なくともSQLインジェクションを防ぐためのある種の方法です。すべての状況に適しているわけではありませんが、出発点です。それについてのより多くの情報をあなたに与えることができる「ボビーテーブル」についての素晴らしいウェブサイトがあります。

于 2013-03-11T00:35:26.357 に答える