DELETE查询不会完全删除记录

时间:2013-07-13 23:24:57

标签: php mysql

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

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

我可以删除PHPMyAdmin中的条目,但是我的PHP脚本无效。

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

$m_id存储消息的ID号。

不返回任何错误,我无法访问Apache错误日志。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

尝试:

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

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

1)查看Apache的错误日志。

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

答案 2 :(得分:0)

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