这看起来很简单,但它失败了。我只想使用下面的代码删除除第一行之外的所有行。

$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>';
}

除了第一个新闻ID外,所有新闻ID都会被回显。当select的同一语句工作时,为什么delete语句不工作?

最佳答案

delete语句无法工作,因为limit关键字附近的语法不正确…您不能执行LIMIT 1,18446744073709551615..LIMITDEELTE一起使用时必须后跟一个数字
参考:DELETE MYSQL
只有在select语句中才能有LIMIT 1,18446744073709551615子句
参考:SELECT MYSQL
您也可以找到要删除的第一行的course\u 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.";

10-06 04:53
查看更多