【问题标题】:Mysqli fetch array nth rowMysqli 获取数组第 n 行
【发布时间】: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)

等等……

我该怎么做?

【问题讨论】:

标签: php mysql loops


【解决方案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}] 就完美了
    猜你喜欢
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-17
    相关资源
    最近更新 更多