使用Mysqli获取第n行数据的数组

5
我有下面这段代码,可以获取一行数据:
```Python ```
$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)

如何完成这个任务?
等等,还有其他的问题需要解决。

1
为什么不把额外的条件放在Where子句中呢? - MimiEAM
这是最好(唯一)的方法吗?我不能返回所有结果的数组吗? - sir_thursday
3
http://www.php.net/manual/en/mysqli-result.fetch-all.php,我想这应该会有所帮助。 - Hawili
3个回答

7
您可以尝试类似以下的做法。
$arrayofrows = array();
while($row = mysqli_fetch_array($result))
{
   $arrayofrows = $row;
}

现在您可以拥有
$arrayofrows[0] //(to get the first row)
$arrayofrows[1] //(2nd row)

哦,这太狡猾了。我甚至可以将其命名为函数并在全局范围内使用。 - sir_thursday
使用 mysqli_fetch_all 或者 while($arrayofrows[] = mysqli_fetch_array($result)) 都可以。 - Tinel Barb

3
我认为你要找的函数是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)

2

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

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

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

谢谢@Sammaye,实际上如果只需要一组连续的行,则“LIMIT {[偏移量,]行数|行数偏移量偏移量}”是完美的。 - Ruth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接