Php 删除行时出现SQL语法错误

Php 删除行时出现SQL语法错误,php,mysql,Php,Mysql,好的,我基本上有一个HTML表单,它由一个隐藏的输入和一个提交按钮组成。当按下按钮时,它将删除MySQL表中的特定行。这些代码实际上都完成了它应该完成的功能。然而,当我运行它的时候,我总是会看到一个语法错误。一旦我得到错误,如果我返回,那一行就消失了,这就是我想要的。我只是不知道如何让它在像应该的那样运行后重定向,而不是得到错误 错误: 错误:您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“1”附近使用的正确语法 第1行在我看来很好(因此产生了混乱) 正在运行的PHP代

好的,我基本上有一个HTML表单,它由一个隐藏的输入和一个提交按钮组成。当按下按钮时,它将删除MySQL表中的特定行。这些代码实际上都完成了它应该完成的功能。然而,当我运行它的时候,我总是会看到一个语法错误。一旦我得到错误,如果我返回,那一行就消失了,这就是我想要的。我只是不知道如何让它在像应该的那样运行后重定向,而不是得到错误

错误: 错误:您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“1”附近使用的正确语法

第1行在我看来很好(因此产生了混乱)

正在运行的PHP代码(ActivationPostDelete.PHP):

使用PHP创建HTML表单,以备需要:
您将ID括在单引号中。它是一个整数,因此不应该用引号括起来

$delete = mysqli_query($con,"DELETE FROM posts WHERE postID='$postID'");
应该是:

$delete = mysqli_query($con,"DELETE FROM posts WHERE postID=$postID");
但是,您也要传递连接字符串两次。因此,我们应该这样做:

$delete = "DELETE FROM posts WHERE postID=$postID";

if (!mysqli_query($con, $delete))
{
  die('Error: ' . mysqli_error($con));
}
但这仍然使您容易受到SQL注入的影响。至少要做到这一点,以改善总体状况:

$delete = sprintf("DELETE FROM posts WHERE postID=%s", mysql_real_escape_string($postID));

if (!mysqli_query($con, $delete))
{
  die('Error: ' . mysqli_error($con));
}

您还需要清理其他输入。

很抱歉,您到底在说什么?Op必须更改您进行查询的方式。请购买一本最近出版的好PHP书籍,避免使用严重威胁安全的弃用垃圾代码。为了加强安全性,使用预先准备好的语句和消毒。好的,我将其更改为:
$delete=mysqli\u query($con,“从postID=“.$postID)”的帖子中删除)
但是,仍然得到相同的错误:/It仍然删除了该行。@datelligent我感谢您的建议。我对PHP还是个新手,所以我有很多东西要学。你有什么书名可以推荐吗?@daj同样的东西。它删除了,但我也得到了错误。
$delete = "DELETE FROM posts WHERE postID=$postID";

if (!mysqli_query($con, $delete))
{
  die('Error: ' . mysqli_error($con));
}
$delete = sprintf("DELETE FROM posts WHERE postID=%s", mysql_real_escape_string($postID));

if (!mysqli_query($con, $delete))
{
  die('Error: ' . mysqli_error($con));
}