我正在尝试构建一个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;
}
}
答案 0 :(得分:0)
Put&#34;在sprintf
的参数中结束字符串。
答案 1 :(得分:0)
我在这里看到一些问题:
$_POST['myForm']
永远不会出现,只有$_POST['Id']
。
除非您定义了我们看不到的$Id
,否则将为空,因此请改用$_POST['Id']
。
可能只是问题中的拼写错误,但查询字符串未关闭。
在您使用<?php echo $Id; ?>
的HTML表单中,您需要再次验证$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,并使用准备好的语句来查询中需要用户输入。