Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ROWNUM不';不工作;试图获取SQL查询中特定行范围的信息_Php_Sql_Pdo - Fatal编程技术网

Php ROWNUM不';不工作;试图获取SQL查询中特定行范围的信息

Php ROWNUM不';不工作;试图获取SQL查询中特定行范围的信息,php,sql,pdo,Php,Sql,Pdo,我有一段代码,它在SQL查询中计算行数,然后执行另一个查询以获取最后四行的信息。我使用了ROWNUM,但它不起作用 $newscount = $db->query(" SELECT * FROM news "); $counter = $newscount->rowCount(); $grabnewsmsg = $db->query(" SELECT * FROM news WHERE ROWNUM >= $

我有一段代码,它在SQL查询中计算行数,然后执行另一个查询以获取最后四行的信息。我使用了
ROWNUM
,但它不起作用

$newscount = $db->query("
    SELECT *
        FROM news
");
$counter = $newscount->rowCount();
$grabnewsmsg = $db->query("
    SELECT *
        FROM news
        WHERE ROWNUM >= $counter-4 -- this particular part doesn't owrk
        ORDER BY updateno DESC -- an A_I column
");
我已经评论了我遇到问题的具体领域。
A_I
部分很好,因为每一行都应该有一个唯一的标识符,但是
ROWNUM
就是不起作用,尽管我在其他网站上读到了其他问题/答案等等。它返回一个错误
列rownum不存在

我只想获取最后四行的信息(
$query->rowCount()-4
),但无法通过某个
updateno
阈值进行选择。如果用户删除一行,则不能适当地使用
a_I
列来确定行号

此外,我还尝试了以下方法:

$grabnewsmsg = $db->query("
    SELECT *
        FROM news
        ORDER BY updateno DESC
        LIMIT 0,4
");

虽然这给出了期望的结果,但我仍然不确定为什么
ROWNUM
不起作用。

你需要理解
AUTO_INC
的含义。它被称为唯一标识符,这是有原因的。“唯一”表示任何其他行都不应具有相同的标识符。

$newscount = $db->query("
    SELECT *
        FROM news
");
$counter = $newscount->rowCount();
$grabnewsmsg = $db->query("
    SELECT *
        FROM news
        WHERE ROWNUM >= $counter-4 -- this particular part doesn't owrk
        ORDER BY updateno DESC -- an A_I column
");
然而,它与任何枚举都毫无关系。所以-

我有一个名为“updateno”的自动递增列,它对应于行数

这就是你做错的地方

事实上,你根本不需要这样一个领域。如果你想列举你的领域-做在飞行中。如果您想要一个标识符,请使用常规名称来表示此-
“id”


而对于任何“rownum”特性,您都需要另一个mysql操作符,即LIMIT

您使用的SQL的“味道”是什么?@Gidil,我使用的是PDO。您的问题就是inmafous“XY问题”的一个例子。你有一些任务要做,你设计了一些不寻常的工具来解决,然后问我们如何使用你无法使用的工具。当你不得不问如何解决最初的问题时,你使用的是哪种数据库管理系统
rownum
表示您正在使用Oracle,但
LIMIT
表示您正在使用不同的东西。如果
WHERE rownum>number
不起作用怎么办?它给我一个错误,说明列ROWNUM不存在。您希望此“ROWNUM”具有哪些特定行?这又是错误的。如果你继续使用你糟糕的方法,不要谢我。你仍然在混淆一些事情。请,请,请多加注意,不要太快下结论,对你来说是一个全新的领域。有一些常规的解决方案为数千名程序员提供了多年的服务。如果这对你不起作用,那就是你做错了。是的。这就是问题所在。一个在互联网上搜索如何做阑尾切除术的医生会吓坏任何人。但编程被认为是一种儿童游戏,任何人只要拨动一下互联网就可以学会。