mySQL PHP打印多行的结果

时间:2013-07-11 01:43:28

标签: php mysql sql database php-5.3

这是一个初学的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
  • 的成员撰写
  • 使用Reddit的热门排名算法,由Cron Job计算出唯一的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);
    }

}

我究竟如何从每一行获取数据?我知道怎么做一行,但我不知道怎么做3行。

提前感谢任何建议。

2 个答案:

答案 0 :(得分:1)

每行的数据都在$row,因此请打印,而不是$rankerrows

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

并且您可以在查询末尾添加LIMIT 3子句,以便它只返回前3行。

答案 1 :(得分: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()的驱动程序和所有好东西,这是有效的解决方案