使用 php 删除 mysql 中具有最高 ID 的行
Delete the row with the highest id in mysql, using php
我正在开发一个非常简单的 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');
?>
您应该删除子选择周围的单引号
"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
您可能需要一个条件来确保用户只能删除他/她自己的评论..
我正在开发一个非常简单的 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');
?>
您应该删除子选择周围的单引号
"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
您可能需要一个条件来确保用户只能删除他/她自己的评论..