这看起来很简单,但它失败了。我只想使用下面的代码删除除第一行之外的所有行。
$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
..LIMIT
与DEELTE
一起使用时必须后跟一个数字
参考: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.";