变量不会显示

时间:2012-01-12 11:02:00

标签: php mysql

我有代码在数据库上运行查询并返回一些数据并显示它。 一切都很简单。我已经测试了查询,它的工作非常完美。

所以在正在执行的查询和我显示数据之间的某处,它无法正常工作。

$q = "SELECT u.username, r.position, r.score, r.winner, t.team FROM ".TBL_FOOT_TOUR_ROUNDS." r
                      LEFT JOIN ".TBL_USERS." u ON u.id = r.winner
                      LEFT JOIN ".TBL_FOOT_TOUR_PLAYERS." pl ON pl.userid = r.winner
                      LEFT JOIN ".TBL_FOOT_TEAMS." t ON t.id = pl.team
                      WHERE r.tourid = '$tour_id' && r.round = '$i' ORDER BY r.position";
                $result = $database->query($q);
                ?>
                <div class="vertical-holder">
                    <div class="vertical-header"><p><?php echo $roundName[$i]; ?></p></div>
                    <?php
                    while($row=mysql_fetch_assoc($result)){
                        extract($row);
                        if($k&1){
                            ?>
                            <div class="horizontal-holder<?php echo $j; ?>">
                                <div class="white-holder">
                                    <div class="player-holder">
                                        <?php
                                        if($winner == 0){
                                            echo "<p>TBC</p>";
                                        }
                                        else{
                                            echo "<p><a href='/profile.php?id=$winner'>$username</a><br />$team</p>";
                                        }
                                        ?>
                                    </div>
                                    <div class="score-holder">
                                        <?php 
                                        if($score == NULL){
                                            echo "<p>-</p>";
                                        }
                                        else{
                                            echo "<p>$score</p>";
                                        }
                                        ?>
                                    </div>
                                </div>
                            <?php
                        }

这是代码的片段(我相信是相关的)。

即使得分存在,分数也始终显示为“ - ”。

其余的返回数据显示没问题。

有人能看出分数变量未显示的原因吗?

由于

2 个答案:

答案 0 :(得分:3)

<?php 
    if($score == NULL){
        echo "<p>-</p>";
    } else {
        echo "<p>$score</p>";
    }
?>
你弄错了。如果数据库中的值为null,则$ score将不为null,它将为字符串“null”。所以试试

<?php 
    if(strtoupper($score) === "NULL"){
        echo "<p>-</p>";
    } else {
        echo "<p>$score</p>";
    }
?>

:)

或者你可以创建一些改变变量的效用函数:

function nullify(&$data) {
    if(strtoupper($data) === "NULL") {
        $data = NULL;
    }
}

然后像这样调用它:

nullify($score);

如果$ score应设置为null,则在调用后它将为null。然后你可以保持你的逻辑^^

答案 1 :(得分:2)

不确定$score包含哪些内容,但在我看来,您可以像以下一样编写测试:

if($score < -1){ // or $score <= -1
    echo "<p>-</p>";
}
else{
    echo "<p>$score</p>";
}