我一直在构建一个简单的留言板脚本,并开始编写一个名为delete.php
的脚本,用户可以在其中输入他/她的密码来删除消息。消息存储有4个值:id
、name
、password
、timestamp
、message
。
我遇到的问题是,我使用的DELETE查询不会完全删除该记录。它将删除name
和message
字段,但该行与id
、timestamp
和password
一起仍然存在。因此,在我的留言板上,没有删除消息,而是有一条带有时间戳的空白消息。
我可以在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/空白。