2017-07-08 16 views
1

PHPを使用してSQLクエリの結果を表示するために一日中苦労しました。 私はデータベースにコインと呼ばれるテーブルを持っています。 - nr_unic(これはインデックスです)。
-rank;
-name;
-symbol;
-price_usd;
-price_btc;
私がする必要があるのは、nameフィールドから各コインの値を取り出し、symbol,price_usdprice_btc、およびrankと表示することです。私が実行して値を表示しようとしているクエリが含まれているコードの一部は次のとおりです。mysqli_fetch_arrayは最初の結果しか表示しません

// 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の指示に続いて、私はコードを更新し、結果を表示するように管理しました。問題は今、彼らは重複している:私は、最初のコインを取得し、次に、最初と2番目の、次に、1番目、2番目と3番目...など。 私が使用するコードは、あなたのwhileループで

+0

使用mysqli_fetch_rowしながら($行= mysqli_fetch_row($結果)){ エコー$行[ '名前']。 "" $行['price_usd']。 "" $ row ['symbol']。 "" $ row ['rank']; }リターンを削除します。 –

+3

'return'ステートメントの目的を知っていることを確認してください。 –

+2

あなたはループ内で「リターン」をしていますが、何が起こると思いますか? –

答えて

2

returnステートメントを更新しただけで最初の行を返す、関数はすぐに終了します。代わりに、アレイ内の結果を収集し、最後に配列を返さなければならない:

$rows = array(); 

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

mysqli_free_result($result); 
return $rows; 
+0

私はこのコードをwordpress関数で実行します(ショートコードを作成する必要があります)。そのため、 'echo'ではなく' return'を使う必要があります。また、あなたが提供したコードを使用すると、1つのコインだけの値が得られます。 –

+0

それは理にかなっています。私はこれが関数の一部であると仮定しました。そうでなければ、 'return'は全く機能しませんでした。 –

+0

私は試してみることができる他の方法がありますか? –

関連する問題