1

我想从表中获取当前 ID,但我使用了这个不起作用的代码

    $query1="SELECT id FROM `login`.`users` LIMIT 2000 OFFSET `id` - 1";
    $result=mysql_query($query1);

如果用户按下提交按钮,则:

    while($row = mysql_fetch_array($result))
    {
      echo $row['id'];
    }

例如,当前 ID = 15,我想成为 14,所以我输入了负数“-”,这根本不起作用,我找不到解决方案。您有任何解决方法的想法吗?

4

2 回答 2

3

我发现您的查询至少有 3 个问题:

  • 你有LIMIT没有ORDER BY。这就像对数据库说:“从表中获取 2000 行,前 2000 行,按您喜欢的顺序。” 我敢肯定你不想要那个。
  • MySQL 中不能有可变的偏移量和限制。都不是负面的。只有硬编码和正数或零。(硬编码的限制可以用动态 SQL 绕过,但这里不需要。)
  • 即使您可以,并且以您的愿望顺序以某种方式神奇地获取了行,OFFSET 14也可能无法让您从15. 惊喜,表中可能有遗漏IDs

解决方案是使用:

SELECT id 
FROM login.users 
WHERE id >= 15                 -- the value you want to start from 
ORDER BY id ASC                -- the order
LIMIT 2000                     -- the limit
OFFSET 0 ;
于 2013-07-04T16:41:44.320 回答
0

为什么不颠倒顺序?

$query1="SELECT id FROM `login`.`users` ORDER BY id DESC LIMIT 2000, 1";
$result=mysql_query($query1);
于 2013-07-04T16:16:47.133 回答