Mysqli 获取数组第 n 行

Posted

技术标签:

【中文标题】Mysqli 获取数组第 n 行【英文标题】:Mysqli fetch array nth row 【发布时间】:2012-08-21 00:25:06 【问题描述】:

我有以下获取单行的代码:

$query = "SELECT *
          FROM translations
          WHERE iddoc = '$id'
          AND submitted = 1;";
$result = mysqli_query($query);
$row = mysqli_fetch_array($result);

我知道这在 while 循环中很有用,您可以在其中循环遍历结果。

但我需要能够抓取满足此条件的特定行。这个伪代码后面的东西:

$query = "SELECT *
          FROM translations
          WHERE iddoc = '$id'
          AND submitted = 1;";
$result = mysqli_query($query);
$arrayofrows = mysqli_fetch_arrayofrows($result);
$arrayofrows[0] //(to get the first row)
$arrayofrows[1] //(2nd row)

等等……

我该怎么做?

【问题讨论】:

为什么不在 Where 子句中加入额外的条件? 这是最好的(唯一)方法吗?我无法返回包含所有结果的数组? http://www.php.net/manual/en/mysqli-result.fetch-all.php,我想这应该会有所帮助 【参考方案1】:

你可以试试这样的

$arrayofrows = array();
while($row = mysqli_fetch_array($result))

   $arrayofrows = $row;

你现在可以拥有

$arrayofrows[0] //(to get the first row)
$arrayofrows[1] //(2nd row)

【讨论】:

OOOH 这太狡猾了。我什至可以将它命名为一个函数并在全局范围内使用它。 while($arrayofrows[] = mysqli_fetch_array($result)) 或使用 mysqli_fetch_all 就足够了。【参考方案2】:

我认为您正在寻找的功能是 mysqli_fetch_all 如下所示。这样就无需创建额外的循环结构或函数来执行已经提供的操作。

$query = "SELECT *
          FROM translations
          WHERE iddoc = '$id'
          AND submitted = 1;";
$result = mysqli_query($query);
$arrayofrows = mysqli_fetch_all($result);
$arrayofrows[0] //(to get the first row)
$arrayofrows[1] //(2nd row)

【讨论】:

【参考方案3】:

这取决于您是否需要返回整个结果集,但我认为 LIMIT 可以像这样使用:

$query = "SELECT *
          FROM translations
          WHERE iddoc = '$id'
          AND submitted = 1 LIMIT 200,200;";

否则,正如其他人所说,您将需要转换为数组(这是fetch_all 所做的),然后从该数组中获取元素。

【讨论】:

谢谢@Sammaye,事实上如果只需要一组连续的行,LIMIT [offset,] row_count | row_count OFFSET offset] 就完美了

以上是关于Mysqli 获取数组第 n 行的主要内容,如果未能解决你的问题,请参考以下文章

HDU2167 Pebbles(状压DP)

P1005 矩阵取数游戏 (60)

P1392 取数(优先队列)

P1392 取数(优先队列)

java中如何通过IO流将稀疏数组写入磁盘和从磁盘中读取,整行存,整行取

MySQLi以数组形式获取[重复]