繁体   English   中英

选择 MySQL 结果中的任何行

[英]Selecting Any Row in MySQL Result

我正在处理一个产品页面,希望能够选择我要引用的 MySQL 结果。

例如,我希望能够引用第 5 行中的结果,而无需执行循环即可到达第 5 行。并且在此之后仍然能够访问所有行。 起初,我想用something $row['result'][4]来获得第 5 行,但意识到这将返回第一行结果列中的第 5 个字符。

有没有什么好的方法可以解决这个问题,这样我就可以随意访问任何行,而不必玩循环并重新查询数据库以重置我在结果中的位置?

编辑:我使用的最基本的查询是SELECT * FROM products ORDER BY id ASC LIMIT 25所以它返回 25 行。 例如,我希望能够获得该 25 个列表中的第 5 行,而不必使用fetch_assoc() 5 次或将我的查询限制为偏移量为 5 的 1 行。

编辑 2:谢谢大家的帮助,我得到了雅库波夫的回答,他的回答被选为这个问题的答案。

这是没有意义的。 mySql 表中的行没有固有的“顺序”,除非您的查询具有显式的order by子句。

可以做的是将每一行读入一个 PHP 数组,然后在您想要的任何时间以您想要的任何顺序随机访问每个数组元素。

如果您碰巧使用 MySQLi,那么mysqli_fetch_array可能是您的理想选择。

我不是 100% 确定,但您实际上可能正在寻找$row[4]['result']而不是$row['result'][4]

我建议你运行print_r($row)来查看实际的数组结构是什么样的,然后从那里开始工作。

当然,这是假设您在查询中检索了不止一行,某些框架是这样做的。 如果是一次检索一行的传统提取,并且您不希望提取前 4 行,那么您需要一些其他机制来查询数据库,以便检索逻辑上是“第 5 行”的内容.

可能最简单的例子是带有 auto_increment 的整数主键(例如,“id”)。 然后将“where id = 5”添加到您的查询中是一件简单的事情。

fetch_all()可以帮助您一次获取所有行。

如果你不能使用 fetch_all(),你仍然可以只使用一次 fetch_assoc() 循环:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM