微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – MySQL删除限制

这似乎很简单,但它失败了.我想要做的就是使用下面的代码删除第一行以外的所有行.

$sql    = "DELETE FROM ".TABLE_PREFIX."news WHERE course_id = $course_id LIMIT 1,18446744073709551615";
$result = MysqL_query($sql, $db);

如果我这样做……

$sql    = "SELECT news_id FROM ".TABLE_PREFIX."news WHERE course_id = $course_id LIMIT 1,18446744073709551615";
$result = MysqL_query($sql, $db);
while ($row = MysqL_fetch_assoc($result)) {
    echo $row['news_id'] . '<br>';
}

除了第一个news_ids之外,所有news_ids都被回应.当select的同一语句有效时,为什么delete语句不起作用?

解决方法:

由于limit关键字附近的语法不正确,删除语句无法正常工作…你不能做LIMIT 1,18446744073709551615 …当与DEELTE一起使用时,LIMIT必须后跟一个数字

参考:DELETE MYSQL

只有在SELECT语句中才能有LIMIT 1,18446744073709551615子句

参考:SELECT MYSQL

您可以做的是找到要删除的第一行的course_id(并且希望如果表格设置正确并且它是表格和自动增量的主键),请执行以下操作:

$sql = "DELETE FROM ".TABLE_PREFIX."news 
        WHERE course_id >=".COURSE_ID_YOU_WANT_DELETED.";

或者这也适用:

$sql = "DELETE FROM ".TABLE_PREFIX."news 
        WHERE course_id !=".COURSE_ID_YOU_WANT.";

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐