我创建了以下准备语句,试图获取数据库中与主题相关的帖子的行数。所以基本上我想要做的就是如果你在论坛上,每当有人发布一个主题的回复,你会在你的回复中看到一个帖子号码。
这是我准备好的声明,其中我正在回显当前主题中的行数,并且它正确显示。
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;
}
答案 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 强>
我没有编辑那段代码,而是认为我会重新编写答案。
首先,而不是使用mysqli
,建议使用PDO。哪种是访问数据库的新PHP方式。它与MySQL类似,但有一些新的方法,总而言之。
如何在MySQLi
除非必须,否则不要使用store_result
。而且看起来你不这样做只是在执行
$result = $posts_stmt->get_result();
$count=0;
while ($row = $result->fetch_array(MYSQLI_ASSOC))
{
$count++;
echo $count." ".$row['post_title'];
}
}