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 行的主要内容,如果未能解决你的问题,请参考以下文章