HTML按钮通过post方法调用php代码,但SQL查询不';行不通

HTML按钮通过post方法调用php代码,但SQL查询不';行不通,php,html,sql,Php,Html,Sql,我试图构建一个html表,每行上都有一个“remove”按钮,一旦按下该按钮,就会调用一个以项目ID为参数的sql查询,从而从我的数据库的“basket”表中删除一个项目。 至于现在,当按下按钮时,什么也没有发生。我认为问题应该出在我传递的参数上,因为当我更改查询以在按下按钮时删除特定ID时,它确实工作得很好 这是我代码的一部分:(如果您需要整个文件,我将提供其余的代码) html部分: <td> <form name="myForm" method="po

我试图构建一个html表,每行上都有一个“remove”按钮,一旦按下该按钮,就会调用一个以项目ID为参数的sql查询,从而从我的数据库的“basket”表中删除一个项目。 至于现在,当按下按钮时,什么也没有发生。我认为问题应该出在我传递的参数上,因为当我更改查询以在按下按钮时删除特定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>

sprintf
的参数中加上“结束字符串”

我在这里看到一些问题:

  • $\u POST['myForm']
    永远不会出现,只有
    $\u POST['Id']
    会出现

  • 除非您定义了我们看不到的
    $Id
    ,否则该值将为空,因此请改用
    $\u POST['Id']

  • 可能只是问题中的一个输入错误,但是带有查询的字符串没有关闭

  • 在HTML格式中,您使用
    ,因此再次需要验证
    $Id
    是否保存了一些数据,并且不是空的/未定义的

  • 尝试:



    你的代码不会被认为是不安全的,但你真的应该抛弃
    mysql.*
    库,转而使用PDO或MySQLi,并在查询中需要用户输入的地方使用预先准备好的语句。

    可能是拼写错误,但sql字符串没有关闭。请注意:不要使用
    mysql.
    函数,因为它们已被弃用。请使用PDO或Mys问题在于$\u POST['Id']的东西。
    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;
        }
    }
    
    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;
        }
    }