我一直在构建一个简单的留言板脚本,并且已经开始编写一个名为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);
$m_id
存储消息的ID号。
不返回任何错误,我无法访问Apache错误日志。
答案 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 /空白。