0

次のコードを使用します。

if (isset($_POST['delete']) && isset($_POST['id']))
{
    $first = get_post('first');
    $query = "DELETE FROM user_master WHERE id='$id'";
    if(!mysql_query($query, $db_server))
        echo "DELETE failed: $query<br />" . 
        mysql_error() . "<br /><br />";
}

$query="SELECT * FROM user_master";
$result= mysql_query($query);

if(!result) die ("Database access failed: " . mysql_error());
$rows = mysql_num_rows($result);

for ($j=0 ; $j<$rows ; ++$j)
{
    $row = mysql_fetch_row($result);
    echo <<<_END
    <pre>
    ID      $row[0]
    First   $row[1]
    Last    $row[2]
    Email   $row[3]
    User    $row[4]
    </pre>
    <form action="willingLog.html" method="post">
    <input type="hidden" name="delete" value="yes" />
    <input type="hidden" name="id" value="$row[0]" />
    <input type="submit" value="DELETE RECORD" /></form>
_END;

テーブルからレコードを削除できません。

「レコードの削除」ボタンを含め、テーブルからのすべてのレコードが画面に印刷されます。しかし、ボタンを押しても何も起こりません。phpmyadminで実際のテーブルを確認しましたが、テーブルにも影響はありません。

私は本からこのようなものを引き出しているので、なぜそれが機能しないのかわかりません。

4

5 に答える 5

2

$id変数をどこに設定したかわかりません。

if (isset($_POST['delete']) && isset($_POST['id']))
{
    //$first = get_post('first');   #not sure what this does
    $id = sanitize($_POST['id'], 'int');  //protect from sql injection
    $query = "DELETE FROM user_master WHERE id=$id";
    if(!mysql_query($query, $db_server))
        echo "DELETE failed: $query<br />" . 
        mysql_error() . "<br /><br />";
}

ネットワークを介して送信されるデータは、必ずサニタイズしてください$_POST。また、idが数値タイプの場合は、値を引用符で囲まないでください。引用符で囲むと、mysqlは値を文字列として解釈します。

最後に、MySql APIが非推奨になったため、MySqliまたはPDOの使用を検討してください。

于 2012-06-26T17:03:14.187 に答える
1

ここで私はその変数から変数を定義しました私は値を削除します

$ id = 2;

    $query = mysql_query("DELETE FROM table_name WHERE id="'.$id.'"");

注:クエリIDの削除は重要です。それ以外の場合は、デフォルトで行全体が削除されます。

于 2014-02-15T11:44:23.953 に答える
1

$ query = mysql_query( "DELETE FROM table_name WHERE id = 1");

于 2014-02-15T12:30:42.947 に答える
0

コードは次のようになります。

$id = get_post('id');

最初の「if」ステートメントの下の中括弧の最初の行。

于 2012-06-26T17:08:23.363 に答える
0
$query = "DELETE FROM user_master WHERE id='$id'";

これはおそらく次のようになります。

$query = "DELETE FROM user_master WHERE id='" . $_POST['id'] "'";

ただし、SQLインジェクションと、ユーザーからデータベースに直接情報を渡してはならない理由について調査してください。

于 2012-06-26T17:02:38.840 に答える