我有代码在数据库上运行查询并返回一些数据并显示它。 一切都很简单。我已经测试了查询,它的工作非常完美。
所以在正在执行的查询和我显示数据之间的某处,它无法正常工作。
$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
}
这是代码的片段(我相信是相关的)。
即使得分存在,分数也始终显示为“ - ”。
其余的返回数据显示没问题。
有人能看出分数变量未显示的原因吗?
由于
答案 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>";
}