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
  • 具有hotscore由 Cron Job 使用 Reddit 的 hotscore 排名算法计算的唯一值

我的问题是:我怎样才能得到前三名的分数并显示这些诗歌的所有数据?

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);
    }

}

我究竟如何从每一行获取数据?我知道如何做一排,但我不确定如何做三排。

提前感谢您的任何建议。

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_result而不是stmt. 由于我没有驱动程序get_result()和所有好东西,这是有效的解决方案

于 2013-07-11T06:41:09.390 回答