0

我正在尝试在每一行上构建一个带有“删除”按钮的 html 表,一旦按下该按钮,就会调用一个以项目 ID 作为参数的 sql 查询,从我的数据库的“篮子”表中删除一个项目。至于现在,当按下按钮时,什么也没有发生。我认为问题应该出在我传递的参数上,因为当我更改查询以在按下按钮时删除特定 ID 时,它运行良好。

这是我的代码的一部分:(如果您需要整个文件,我将提供其余代码)。

html部分:

    <td>
      <form name="myForm" method="post" action="<?php $_SERVER['PHP_SELF'];?>" >
        <input type="submit" class="css3button" value="remove"  / > </td>
        <input type="hidden" name="Id" id="Id" value="<?php echo $Id; ?>" />
        </form>
     </td>

php部分:

if(isset($_POST['myForm'])){
    $removal = sprintf("DELETE FROM Basket WHERE Id='%s'" ,mysql_real_escape_string($Id));
    $remove_result = mysql_query($removal);

    if (!$remove_result ) {
        echo "DB Error, could not query the database\n";
        echo 'MySQL Error: ' . mysql_error();
        exit;
    }
}
4

2 回答 2

0

将 " 以结束您的字符串在sprintf.

于 2013-06-17T07:06:22.523 回答
0

我在这里看到一些问题:

  1. $_POST['myForm']永远不会出现,只会$_POST['Id']出现。

  2. 除非您定义$Id我们看不到,否则它将为空,因此请$_POST['Id']改用。

  3. 可能只是问题中的错字,但带有查询的字符串未关闭。

  4. 在您使用的 HTML 表单<?php echo $Id; ?>中,您需要再次验证它是否$Id包含一些数据并且不是 null/undefined。

尝试:

if(isset($_POST['Id'])){
    $removal = sprintf("DELETE FROM Basket WHERE Id='%s'" ,mysql_real_escape_string($_POST['Id']));
    $remove_result = mysql_query($removal);

    if (!$remove_result ) {
        echo "DB Error, could not query the database\n";
        echo 'MySQL Error: ' . mysql_error();
        exit;
    }
}

您的代码不会被认为是不安全的,但您确实应该放弃mysql_*库以支持 PDO 或 MySQLi,并在查询中需要用户输入的地方使用准备好的语句。

于 2013-06-17T07:09:28.577 回答