使用php删除mysql中id最高的行

时间:2016-10-13 13:00:33

标签: php mysql database sql-delete

我正在开发一个非常简单的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');
?>

3 个答案:

答案 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 minichatid ='mi string text'

并且您可以尝试从子查询中删除

 DELETE 
FROM `minichat` 
WHERE `minichat`.`id` = (select t.id from (SELECT MAX(`id`) FROM `minichat`) t)

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

答案 2 :(得分:0)

您可以尝试设置一个收集所需ID的变量。然后,您可以将该变量称为要删除的ID。