PHP中的上一行和下一行

PHP中的上一行和下一行,php,Php,我在phpmyadmin中有一个表,其中有一个'val'列和一个'num'列。这两列的数字范围为0到10。使用PHP,我想在phpmyadmin中访问这个表,当我的'val'=10时,我想得到'val'=10值前后的'num'值。在这幅图中,我想得到当val=10,num=9和4,对于第二个val=10,num=4和10 $s = $mysqli->query("SELECT `Num` FROM `user_entries` WHERE `Val` = 10"); 我不确定下一步要添加

我在phpmyadmin中有一个表,其中有一个
'val'
列和一个
'num'
列。这两列的数字范围为0到10。使用PHP,我想在phpmyadmin中访问这个表,当我的'val'=10时,我想得到'val'=10值前后的'num'值。在这幅图中,我想得到当val=10,num=9和4,对于第二个val=10,num=4和10

$s = $mysqli->query("SELECT `Num` FROM `user_entries` WHERE `Val` = 10");
我不确定下一步要添加什么,因为我还没有找到任何能够做到这一点的函数。我该怎么做


您的查询应该是这样的

"SELECT `Num` FROM `user_entries` WHERE `Val` = '10' ";

我不确定您是否可以按照表的方式执行此操作(实际上,您可能可以在PHP中执行此操作,但这可能会在某一天按您的意愿工作,但在第二天就不行了……(请参阅))

我建议设置一个列,
id
sort
,具体取决于您的需要,您可以选择:

id  Val     Num
1   2       6
2   0       0
3   4       8
4   3       9
5   10      1
6   8       4
7   10      6
8   5       10
因此,我建议您使用MySQL获取所需内容:

SELECT 
IFNULL((SELECT f2.Num FROM user_entries f2 WHERE f2.id = f.id-1),-1) AS previous_Val,
IFNULL((SELECT f2.Num FROM user_entries f2 WHERE f2.id = f.id+1),-1) AS next_Val
FROM user_entries f
WHERE Val = 10    
ORDER BY id 
这将返回:

previous_Val    next_Val
9               4
4               10
如果没有上一个值或下一个值,它将返回
-1


您可能需要了解如何使用它,希望能有所帮助。

您的问题很容易被误解,因此请尝试发布更多解释,预期输出可能是一些数据或图片。如果您想在php中执行此操作,为什么问题标记为“sql”。如果它被标记为“sql”,并且您希望在数据库中执行该工作,那么您使用的是哪个数据库?此外,在问题中提供样本数据和期望的结果有助于尽可能地澄清问题。很抱歉,我有点搞混了。我希望这是足够的解释,如果不是,我会尝试添加更多。好的,我已经改变了。我一直认为我有正确的语法,但我想不是。它仍然不能帮我找到我需要的价值观?好的,谢谢。我明白你在做什么,如果我试过的话,我可能会把它塞住。但是我添加了id列,现在我该如何打印出来呢?我知道他们已经返回了所需的值,但是如何打印返回的sql语句的值呢?现在,您只需要使用
while($row=$s->mysqli\u fetch\u assoc())
,然后您就可以访问
$row['previous\u Val']
$row['next\u Val']
对于每个
val=10
(请记住顺序是
id ASC