我在一个产品页上工作,并希望能够选择哪个mysql结果我引用。
例如,我希望能够引用第5行中的结果,而无需执行循环即可到达第5行。以及以后仍然能够访问之前的所有行。一开始,我在想 something $row['result'][4]
只得到第5行,但意识到这将返回第一行结果列中的第5个字符。
有没有什么好方法可以让我随意访问任何一行,而不必使用循环和重新查询数据库来重置结果中的位置?
编辑:我使用的最基本的查询是 SELECT * FROM products ORDER BY id ASC LIMIT 25
所以它返回25行。我想能够得到,例如,第5行的列表中的25个不必使用 fetch_assoc()
5次或将我的查询限制为只有1行,偏移量为5。
编辑2:谢谢大家的帮助,我得到了雅库波夫的回答,他的回答被选为这个问题的答案。
3条答案
按热度按时间iqxoj9l91#
我不是百分之百肯定,但你可能真的在找
$row[4]['result']
,不是$row['result'][4]
;我建议你快跑
print_r($row)
看看实际的数组结构是什么样子,然后从那里开始工作。当然,这是假设您在查询中检索了多行,就像某些框架那样。如果是一次检索一行的传统获取方式,并且不希望检索前4行,那么需要其他机制来查询数据库,以便检索逻辑上的“第5行”。
可能最简单的例子是带有自动增量的整数主键(例如,“id”)。那么在查询中添加“whereid=5”就很简单了。
huus2vyu2#
那没道理。mysql表中的行没有内在的“顺序”,除非您的查询有显式的
order by
条款。您可以做的是将每一行读入一个php数组,然后在任何时候以您想要的顺序随机访问每个数组元素。
如果您碰巧正在使用mysqli,那么mysqli\u fetch\u数组可能非常适合您。
nhjlsmyf3#
fetch_all()可以帮助您一次获取所有行。
如果不能使用fetch\u all(),则仍然可以使用fetch\u assoc()循环一次: