我正在开发一个非常简单的minichat程序(php/mysql
),它显示最后10条消息。
我想添加一个按钮来删除最后一条消息(使用表单,导致php
文件,如下所示。
我真的是php
和mysql
的初学者,所以,我不明白为什么它不起作用。
按照我的代码:
<?php
// Create connection
$cn = new mysqli("localhost","root","","test");
// Check connection
if($cn->connect_error)
{
echo "Connection failed : " . $cn->connect_error;
}
$sql = "DELETE FROM `minichat` WHERE `minichat`.`id` = ('SELECT MAX(`id`) FROM `minichat`')";
if($cn->query($sql) === TRUE){
echo "Deleted succesfully";
}
else
{
echo "Error deleting record: " . $cn->error;
}
//header('Location: connexion.php');
?>
答案 0 :(得分:5)
根据DELETE Syntax上的手册:
子查询
您无法从表中删除并从中选择同一个表 子查询。
所以你应该这样做:
DELETE FROM minichat ORDER BY id DESC LIMIT 1
你可能想要一个条件来确保用户只能删除他/她自己的评论..
答案 1 :(得分:3)
您应该删除子选择
周围的单引号 "DELETE FROM `minichat` WHERE `minichat`.`id` = (SELECT MAX(`id`) FROM `minichat`)"
否则你有WHERE minichat
。id
='mi string text'
并且您可以尝试从子查询中删除
DELETE
FROM `minichat`
WHERE `minichat`.`id` = (select t.id from (SELECT MAX(`id`) FROM `minichat`) t)
预计超过使用子查询删除的限制
答案 2 :(得分:0)
您可以尝试设置一个收集所需ID的变量。然后,您可以将该变量称为要删除的ID。