【问题标题】:mysqli_fetch_array only displays the first resultmysqli_fetch_array 只显示第一个结果
【发布时间】:2017-12-12 19:33:52
【问题描述】:

我整天都在努力使用 PHP 显示 SQL 查询的结果。 我在数据库中有一个名为硬币的表,其中包含以下列: - nr_unic(这是索引);
- rank;
- name;
- symbol;
- price_usd;
- price_btc;
我需要做的是获取每个硬币的值(来自name 字段)并显示symbolprice_usdprice_btcrank。包含我正在运行并尝试显示值的查询的代码是:

    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);

    // SQL QUERY
    $sql= "SELECT rank, name, symbol, price_usd, price_btc, 24h_volume_usd FROM coins WHERE rank BETWEEN 1 AND 10 ORDER BY nr_unic DESC LIMIT 10";
    $result = $conn->query($sql);
    $rows = array();
    if ($result) {
    while($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
    $rows[] =  $row['name'] . " " . $row['price_usd'] . " " . $row['symbol'] . " " . $row['rank'];
    foreach ($rows as $key => $value) {
    echo $value;
    }
    }
    mysqli_free_result ($result);
    }

谢谢!

稍后编辑 根据@Máté Solymosi 的指示,我设法更新了代码并显示结果。现在的问题是它们被重复了:我得到第一枚硬币,然后是第一枚和第二枚,然后是第一枚、第二枚和第三枚……以此类推。 我使用的代码已更新

【问题讨论】:

  • 使用 mysqli_fetch_row while($row = mysqli_fetch_row($result)) { echo $row['name'] 。 “”。 $row['price_usd'] 。 “”。 $row['symbol'] 。 “”。 $行['排名']; } 删除返回。
  • 确保你知道return声明的目的。
  • 你在循环中做“返回”,你期望发生什么?
  • 我也尝试使用 mysqli_fetch_row 和 echo 而不是 return 但结果是一样的。但是,我在一个 WordPress 网站中使用它,我想为其制作一个短代码来运行此代码。这就是为什么我首先使用return
  • 您正在运行foreach 循环inside while 循环,这会导致您重复。也许是阅读有关 foreachwhile 功能的手册的好时机。

标签: php mysql mysqli while-loop


【解决方案1】:

while 循环中的return 语句导致函数立即终止,只返回第一行。相反,您应该将结果收集到一个数组中并在最后返回该数组:

$rows = array();

while($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
  $rows[] = $row['name'] . " " . // ...
}

mysqli_free_result($result);
return $rows;

【讨论】:

  • 我在 wordpress 函数中运行此代码(需要创建一个简码),这就是为什么我需要使用 return 而不是 echo。此外,当我使用您提供的代码时,我仍然只能获得一枚硬币的值...
  • 这是有道理的。我认为这是函数的一部分,否则 return 根本不起作用。
  • 你有什么其他方法可以尝试吗?
  • 这不起作用吗?您现在遇到的错误是什么?
  • $rows 现在是一个数组,因此在显示它时必须循环它。
猜你喜欢
  • 1970-01-01
  • 2021-11-01
  • 2021-02-01
  • 2018-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-19
相关资源
最近更新 更多