0

これは初心者の PHP/SQL の質問です。

基本的に、私はこのようなデータベースを持っています

  Poem_id   |   Poem_content  |  Poem_by  |   Poem_hotscore
------------ ----------------- ----------- -----------------
     1      |  Blah Bleh<br>B.|     4     |  5342.3920349
------------ ----------------- ----------- -----------------
     7      |  Blah Bluu<br>F.|     4     |  5003.3920382
------------ ----------------- ----------- -----------------
     9      |  Blerp Bloop Foo|    34     |  4300.7281209

それぞれの詩

  • ユニークなid
  • コンテンツあり
  • ユニークなメンバーによって書かれていますmember_id
  • hotscoreReddit のホットスコア ランキング アルゴリズムを使用して、Cron Job によって計算された一意の値を持っています

私の質問は、これらの詩から上位 3 つのスコアを取得し、すべてのデータを表示するにはどうすればよいですか?

PHP私がこれまでに持っているコードは次のとおりです。

if ($rankerrows = $mysqli->prepare("SELECT * FROM poems ORDER BY poem_hotscore DESC")) {

    $rankerrows->execute();
    $rankerrows->store_result();


    while ($row = mysqli_fetch_assoc($rankerrows)) {
        print_r($rankerrows);
    }

}

各行からデータを正確に取得するにはどうすればよいですか? 1行のやり方は知っていますが、3行のやり方がわかりません。

アドバイスをよろしくお願いします。

4

2 に答える 2

1

各行のデータは に$rowあるので、 ではなくそれを出力してください$rankerrows

while ($row = mysqli_fetch_assoc($rankerrows)) {
    print_r($row);
}

また、クエリの最後に句を追加してLIMIT 3、上位 3 行のみを返すようにすることもできます。

于 2013-07-11T01:48:25.823 に答える
0

他の答えはうまくいきませんでしたが、これはうまくいきました:

if ($rankerrows = $mysqli->prepare("SELECT * FROM poems ORDER BY poem_hotscore DESC LIMIT 3")) {

    $rankerrows->execute();

    $row = array();
    stmt_bind_assoc($rankerrows, $row);

    /* Store data from poems */
    $poem_id=array();
    $poem_title=array();

    $i=0;


    while ($rankerrows->fetch()) {
        $poem_id[$i]=$row['poem_id'];
        $poem_title[$i]=$row['poem_title'];
        $i++;
    }

他の回答でを使用するmysqli_fetch_assoc()と、 ではなく でのみ呼び出すことができるというエラーが表示されましmysqli_resultstmt。私はそのためのドライバーを持っていないのでget_result()、これはうまくいった解決策です

于 2013-07-11T06:41:09.390 に答える