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 会将其解释为字符串。

最后,考虑使用MySqliPDO,因为 MySql API 已被弃用。

于 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
$query = "DELETE FROM user_master WHERE id='$id'";

这应该是:

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

但是请对 SQL 注入做一些研究,以及为什么永远不要将信息从用户直接传递到数据库中。

于 2012-06-26T17:02:38.840 回答
0

代码应为:

$id = get_post('id');

在第一个“if”语句下的花括号的第一行。

于 2012-06-26T17:08:23.363 回答