WHILE中的IF语句不起作用

时间:2013-10-27 02:44:57

标签: php mysql sql database

我正在研究基本的消息传递系统。这是为了获取所有消息并使表中具有未读消息的行为绿色。在表中,有一个名为“msgread”的列。默认设置为“0”。因此它应该使用msgread = 0 - >进行任何行。绿色。这只适用于我的代码表的第一行 - 我验证它总是得到0值,但它只能在while语句中第一次使用..

require('./connect.php');

$getmessages = "SELECT * FROM messages WHERE toperson = '" . $userid . "'";

echo $getmessages;

$messages = mysql_query($getmessages);

if(mysql_num_rows($messages) != 0) {

    $table = "<table><tr><th>From</th><th>Subject</th><th>Message</th></tr>";

    while($results = mysql_fetch_array($messages)) {

        if(strlen($results[message]) < 30){
            $message = $results[message];
        }
        else {
            $message = substr($results[message], 0 ,30) . "...";
        }

        if($results[msgread] == 0){

            $table .= "<tr style='background:#9CFFB6'>";
            $table .= "<td>" . $results[from] . "</td><td>" . $results[subject] . "</td><td><a href='viewmessage.php?id=" . $results[message_id] ."'>" . $message . "</a></td></tr>";
        }
        else {
            $table .= "<tr>";
            $table .= "<td>" . $results[from] . "</td><td>" . $results[subject] . "</td><td><a href='viewmessage.php?id=" . $results[message_id] ."'>" . $message . "</a></td></tr>";

        }
    }
    echo $table ."</table>";
}
else {
    echo "No Messages Found";   
}

有所有代码,包括从数据库中获取信息。感谢。

3 个答案:

答案 0 :(得分:5)

if(strlen($results[message]) < 30){

可能应该引用该消息:

if(strlen($results['message']) < 30){

还有很多其他类似的问题

答案 1 :(得分:1)

我测试了你的代码,我发现的唯一错误是在数组$ results中缺少quoatation标记。当最合适的$result[message_id]时,您正在使用此$result['message_id']。其余的工作正常,msgread等于0的记录保留绿线。

答案 2 :(得分:1)

你的代码看起来有点讨厌,不容易阅读。

  • 您应该使用mysqli_fetch_assoc()
  • 始终以a;
  • 结束样式
  • 在关联数组
  • 上使用引号
  • var名称的更多逻辑选择
  • $userid来自哪里?内容安全吗?

以下是您的代码的快速清理版本:

$query = "SELECT * FROM messages WHERE toperson = '" . $userid . "'";

if($results = mysqli_query($query)) {

    if(mysqli_num_rows($results) != 0) {

        $table = "<table><tr><th>From</th><th>Subject</th><th>Message</th></tr>";

        while($data = mysqli_fetch_assoc($results)) {

            if(strlen($data['message']) > 30){
                $data['message'] = substr($data['message'], 0 ,30) . "...";
            }

            $table .= "<tr";

            if($data['msgread'] == 0){
                $table .= " style='background:#9CFFB6;'";
            }

            $table .= ">";

            $table .= "<td>" . $data['from'] . "</td><td>" . $data['subject'] . "</td><td><a href='viewmessage.php?id=" . $data['message_id'] ."'>" . $data['message'] . "</a></td></tr>";

        }

        echo $table ."</table>";

    } else {

        echo "No Messages Found";   

    }  
}