获得num_rows总数以在循环中回显每个数字直至其总数

时间:2015-07-24 13:00:22

标签: php mysql while-loop

我创建了以下准备语句,试图获取数据库中与主题相关的帖子的行数。所以基本上我想要做的就是如果你在论坛上,每当有人发布一个主题的回复,你会在你的回复中看到一个帖子号码。

这是我准备好的声明,其中我正在回显当前主题中的行数,并且它正确显示。

if ($posts_stmt = $con->prepare("SELECT * FROM forum_posts WHERE `category_id`=? AND `id`=?")) {

    $posts_stmt->bind_param("ii", $cid, $tid);
    $posts_stmt->execute();
}   

    $posts_stmt->store_result();
    $post_num_rows = $posts_stmt->num_rows;
    echo "Number of rows" . $post_num_rows;

但是,我无法弄清楚如何在回复框中显示每个回复的每个数字。

即:

如果总共有5行,则会有五个不同的回复或回复框。我无法弄清楚如何让回复框这样做..

1

2

3

4

5

我回复了这些帖子的一些信息,这就是我不知道如何按照我的意愿构建代码的方法。

echo "<tr><td valign='top' style='border: 1px solid #000000;'>
    <div style='min-height: 125px;'>".$topic_title."<br />
    by ".$post_creator." - " .$post_date. "<hr />" . $post_content ."</div></td>
   <td width='200' valign='top' align='center' style='border: 1px solid #000000;'>User Info Here!</td></tr>
    <tr><td colspan='2'><hr /></td></tr>";

有谁知道我该怎么做?

更新 - 我的提取

$posts_stmt->store_result();
    while ($row_count = $posts_stmt->fetch()) {
    $post_num_rows = $posts_stmt->num_rows;
    echo "Number of rows" . $post_num_rows;
    }

1 个答案:

答案 0 :(得分:1)

在使用fetch_row()时,只需在循环中使用计数器即可。将计数器初始化为0并在循环中递增

另外,如果您使用的是PDO。您不需要使用store_result

  if ($posts_stmt = $con->prepare("SELECT * FROM forum_posts WHERE 
      `category_id`=? AND `id`=?")) {
     $posts_stmt->bind_param("ii", $cid, $tid);
     $posts_stmt->execute();
}   

$rows = $posts_stmt->fetchAll(PDO::FETCH_ASSOC);

    //now run through all the data with a while loop
    //the count will have the correct 1,2,3,4.. values
    $count=0;
    foreach($rows as $row) {
       $count++;
       echo $count. " ".$row['post_title'] ; // and other echo stuff
    }  

<强> EDITS

  1. 我没有编辑那段代码,而是认为我会重新编写答案。 首先,而不是使用mysqli,建议使用PDO。哪种是访问数据库的新PHP方式。它与MySQL类似,但有一些新的方法,总而言之。

  2. 如何在MySQLi

  3. 中获取所有行

    除非必须,否则不要使用store_result。而且看起来你不这样做只是在执行

    后执行此操作
        $result = $posts_stmt->get_result();
        $count=0;
        while ($row = $result->fetch_array(MYSQLI_ASSOC))
        {
            $count++;
            echo $count." ".$row['post_title'];
        }
        }