Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取num_rows total以在循环中回显每个数字的总和_Php_Mysql_While Loop - Fatal编程技术网

Php 获取num_rows total以在循环中回显每个数字的总和

Php 获取num_rows total以在循环中回显每个数字的总和,php,mysql,while-loop,Php,Mysql,While Loop,我准备了下面的语句,创建该语句是为了获取数据库中与主题相关的帖子的行数。所以基本上我想做的是,如果你在论坛上,每次有人发布一个主题的回复,你会在回复中看到一个帖子编号 这是我准备好的陈述,在陈述中,我重复了当前主题中的行数,并且正确地提出了它 if ($posts_stmt = $con->prepare("SELECT * FROM forum_posts WHERE `category_id`=? AND `id`=?")) { $posts_stmt->bind_pa

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

这是我准备好的陈述,在陈述中,我重复了当前主题中的行数,并且正确地提出了它

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行,将有五个不同的回复或回复框。我不知道如何让回复框做到这一点

一,

二,

三,

四,

五,

我像这样重复了一些帖子的信息,而这正是我不知道如何构造代码来做我想做的事情的地方

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>";

使用
fetch\u row()
时,只需在循环中使用一个计数器即可。将计数器初始化为0并在循环中递增

另外,如果您正在使用PDO。您不需要使用
存储结果

  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
    }  

编辑

  • 我想我应该重新编写答案,而不是编辑那些代码。 首先,建议使用PDO,而不是使用
    mysqli
    。这是PHP访问数据库的新方法。它与MySQL类似,但有一些新方法,而且总体上更好

  • 如何在
    MySQLi

  • 除非必须,否则不要使用
    存储结果。看起来你并没有这样做,只是在执行之后做这个

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

    请发布用于从结果对象获取行的代码。我实际上没有,但我只是很快地创建了一个,并且仍然得到了相同的结果。我还必须在循环的一侧包含我的num_行代码吗?我会因此而出错<代码>致命错误:调用非对象上的成员函数fetch_row()
    然后我得到了
    $result
    的未定义变量的错误。$result必须是什么?你这是什么意思?对不起。我键入的
    $result
    错误。它应该是
    $data
    。我已经在上面进行了更正,我刚刚将代码更新为php文档中推荐的代码。你能告诉我它是否在运行吗?好的。我改变了很多答案。现在就试试吧,做了一个相当大的更新。如果您仍然有问题,我建议我们在聊天中继续
        $result = $posts_stmt->get_result();
        $count=0;
        while ($row = $result->fetch_array(MYSQLI_ASSOC))
        {
            $count++;
            echo $count." ".$row['post_title'];
        }
        }