HTML按钮通过post方法调用php代码,但SQL查询不起作用

时间:2013-06-17 07:00:17

标签: php html sql

我正在尝试构建一个html表,每一行按下一个“删除”按钮,调用带有项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>

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;
    }
}

2 个答案:

答案 0 :(得分:0)

Put&#34;在sprintf的参数中结束字符串。

答案 1 :(得分:0)

我在这里看到一些问题:

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

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

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

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

  5. 尝试:

    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,并使用准备好的语句来查询中需要用户输入。