繁体   English   中英

MySQL SQL从多行打印结果

[英]mySQL PHP print results from multiple rows

这是一个初学者的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的成员编写
  • 有一个由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);
    }

}

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

在此先感谢您的任何建议。

每行中的数据都在$row ,所以打印出来,而不是$rankerrows

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

您可以在查询末尾添加一个LIMIT 3子句,这样它只会返回前3行。

另一个答案不起作用,但是可以:

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而不是stmtmysqli_result 由于我没有get_result()的驱动程序以及所有的好东西,因此这是有效的解决方案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM