选择mysql结果中的任意行

68bkxrlz  于 2021-06-18  发布在  Mysql
关注(0)|答案(3)|浏览(313)

我在一个产品页上工作,并希望能够选择哪个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:谢谢大家的帮助,我得到了雅库波夫的回答,他的回答被选为这个问题的答案。

iqxoj9l9

iqxoj9l91#

我不是百分之百肯定,但你可能真的在找 $row[4]['result'] ,不是 $row['result'][4] ;
我建议你快跑 print_r($row) 看看实际的数组结构是什么样子,然后从那里开始工作。
当然,这是假设您在查询中检索了多行,就像某些框架那样。如果是一次检索一行的传统获取方式,并且不希望检索前4行,那么需要其他机制来查询数据库,以便检索逻辑上的“第5行”。
可能最简单的例子是带有自动增量的整数主键(例如,“id”)。那么在查询中添加“whereid=5”就很简单了。

huus2vyu

huus2vyu2#

那没道理。mysql表中的行没有内在的“顺序”,除非您的查询有显式的 order by 条款。
您可以做的是将每一行读入一个php数组,然后在任何时候以您想要的顺序随机访问每个数组元素。
如果您碰巧正在使用mysqli,那么mysqli\u fetch\u数组可能非常适合您。

nhjlsmyf

nhjlsmyf3#

fetch_all()可以帮助您一次获取所有行。
如果不能使用fetch\u all(),则仍然可以使用fetch\u assoc()循环一次:

$rows = [];
while ($row = mysqli_fetch_assoc($result)) {
  $rows[] = $row;
}
var_dump($rows[4]);

相关问题