DELETE查询获胜';不能完全删除记录


DELETE query won't completely remove record

我一直在构建一个简单的留言板脚本,并开始编写一个名为delete.php的脚本,用户可以在其中输入他/她的密码来删除消息。消息存储有4个值:idnamepasswordtimestampmessage

我遇到的问题是,我使用的DELETE查询不会完全删除该记录。它将删除namemessage字段,但该行与idtimestamppassword一起仍然存在。因此,在我的留言板上,没有删除消息,而是有一条带有时间戳的空白消息。

我可以在PHPMyAdmin中删除该条目,但它在我的PHP脚本中不起作用。

$db_connection->query("DELETE FROM 'messages' WHERE 'id' = ".$m_id.";") 
    or die($db_connection->error);

CCD_ 12存储消息的ID号。

没有返回任何错误,并且我无法访问Apache错误日志。

很可能是";"阻碍了您的查询,在您的语句末尾:

("DELETE FROM 'messages' WHERE 'id' = ".$m_id.";") 

正如评论部分所指出的,表名不需要在它们周围加引号

一个典型的DELETE语句应该由这样一个简单的查询组成:

mysql_query("DELETE FROM messages WHERE id='$m_id'") or die(mysql_error());  

尽管如此,使用mysql_函数将是一个非常糟糕的主意,因为它们已被弃用/未被维护。在这种情况下,您应该学习PDO/mysqli

尝试:

$db_connection->query('DELETE FROM messages WHERE id = ' . $m_id ) or die($db_connection->error);

如果它不起作用,你可以做两件事:

1) 查看Apache的错误日志。

2) 当您在PhpMyAdmin中删除行时,它通常会向您显示所使用的查询。

我查看了您在评论中提供的屏幕截图,一种可能性是现有记录确实被删除了,但新记录是由不同的代码添加的。如果没有看到您的所有代码,我就无法判断情况是否属实。当然,除了确保你没有任何触发因素之外,这也是一件需要寻找的事情。另一种可能性是,您的delete语句实际上根本没有运行,但另一段代码正在更新该记录,并将一些列设置为NULL/空白。