mysqli_fetch_array只显示第一个结果

时间:2017-07-08 17:12:57

标签: php mysql mysqli while-loop

我整天都在努力使用PHP显示SQL查询的结果。 我在数据库中有一个名为coins的表,其中包含以下列: - 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的指示,我管理了更新代码并显示结果。现在的问题是它们正在重复:我得到第一枚硬币,然后是第一枚和第二枚硬币,然后是第一枚,第二枚和第三枚......依此类推。 我使用的代码已更新

1 个答案:

答案 0 :(得分:2)

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

$rows = array();

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

mysqli_free_result($result);
return $rows;