'for'循环通过数据库没有显示结果

时间:2011-10-18 04:36:56

标签: php

基本上,我为我和我的朋友构建了一个小型文本聊天类型的应用程序,现在这些消息似乎在页面上变得很长,所以我认为如果我只能显示最新的10或20条消息或者更好如此。

那就是说,我尝试了一个for循环:

$row = mysqli_num_rows($dbqDoIt4_mssgs);
for($i = 0; $i<5; $i++){
    if($row[$i]<5){
        echo '<div class="holdChat"><span class="orangeBigger">' . strtoupper($row['user']). '</span>' . ' ' . '<span class="txtSaid">said:</span> ' . '<span style="color:#171717;">' . $row['mssg'] . '</span>' . '</div><br/>';
    }
}

代码的最后一部分有点长,但基本上它包含了CSS类等,用于包含数据库文本的灰色框。

它现在显示五行(或者我告诉它多少行)。我没有得到代码或PHP的错误,但是数据库中的消息本身没有显示,所以我得到的是HTML上应该是文本的空灰色框。

我假设,因为我可能将$ row引用为$ row [i],它不是直接接收消息(?)

(我正在构建一个小应用程序来自学PHP。)

2 个答案:

答案 0 :(得分:2)

来自mysqli_num_rows的PHP文档:

  

mysqli_result :: num_rows - mysqli_num_rows - 获取结果中的行数

为您的$row变量分配了一个数值,这在您循环播放时并不意味着什么。

我没有使用MySQLi,但是使用MySQL,你可以这样做:

while ($row = mysql_query($query_string)) {
  ...
}

在设置$row时(每个循环都是一个新行),代码会运行。只需添加一个计数器,确保您的打印次数不超过五次,并且您的代码应该可以正常工作。

答案 1 :(得分:1)

我会做这样的事情:

<?php
    $i = 0;
    while($row = mysql_fetch_array($query))
    {        
        $i++;
        echo '<div class="holdChat"><span class="orangeBigger">' . strtoupper($row['user']). '</span>' . ' ' . '<span class="txtSaid">said:</span> ' . '<span style="color:#171717;">' . $row['mssg'] . '</span>' . '</div><br/>';
        if ($i == 5)
        {
            break;
        }
    }
?>