使用 php 删除 mysql 中具有最高 ID 的行

Delete the row with the highest id in mysql, using php

我正在开发一个非常简单的 minichat 程序 (php/mysql),它会显示最后 10 条消息。

我想添加一个按钮来删除最后一条消息(使用一个表单,生成一个 php 文件,如下所示)。

我真的是 phpmysql 的初学者所以,我不明白为什么它不起作用。

遵循我的代码:

<?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');
?>

您应该删除子选择周围的单引号

 "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)

这预计会超过使用子查询删除的限制

您可以尝试设置一个变量来收集您想要的 ID。然后你可以引用那个变量作为你要删除的ID。

根据 DELETE Syntax 上的手册:

Subqueries

You cannot delete from a table and select from the same table in a subquery.

所以你应该这样做:

DELETE FROM minichat ORDER BY id DESC LIMIT 1

您可能需要一个条件来确保用户只能删除他/她自己的评论..