-4

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

我遇到的问题是我正在使用的 DELETE 查询不会完全删除记录。它将删除nameandmessage字段,但该行仍然存在id,timestamppassword。所以在我的留言板上,不是被删除的消息,而是带有时间戳的空白消息。

我可以删除 PHPMyAdmin 中的条目,但它不适用于我的 PHP 脚本。

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

$m_id存储消息的 ID 号。

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

4

3 回答 3

1

";"在您的陈述结束时,这很可能是阻碍您查询的原因:

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

正如评论部分所述,表名不需要引号

一个典型的DELETE语句应该由一个简单的查询组成,如下所示:

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

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

于 2013-07-13T23:27:05.683 回答
0

尝试:

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

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

1)查看Apache的错误日志。

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

于 2013-07-13T23:36:32.023 回答
0

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

于 2013-07-14T05:38:10.830 回答