2011-02-25 130 views
0

下面是该查询:PHP代码回声不返回“0”,如果没有结果

$query = "SELECT name,deleted,COUNT(message) as message FROM guestbook_message WHERE name='".$name."' AND deleted=1 GROUP BY name"; 
$result = mysql_query($query) or die(mysql_error()); 
$deletedtotal_row = mysql_fetch_array($result); 

在这里,当我使用它:

echo "You have had ".($deletedtotal_row['deleted']) ? $deletedtotal_row['deleted'] : '0'." messages deleted"; 

这样的错误,不显示的语法错误,但不显示任何结果。

但是当我使用:

echo ".$totaldeleted_row['deleted']."; 

它工作正常。但是,如果没有消息为该用户删除,它不会返回任何内容,但我希望它显示'0'。

任何想法我错了吗?

回答

0

改变这一点:

echo "You have had ".($deletedtotal_row['deleted'] ? $deletedtotal_row['deleted'] : '0')." messages deleted"; 

此外,这echo ".$totaldeleted_row['deleted'].";是非常糟糕的。做到这一点,而不是:

echo $totaldeleted_row['deleted']; 
+0

这不是*很不好*。它可能不是最佳的。阅读可能不太好。但它绝不是*非常不好*(尤其是与您的选择有关)...... – ircmaxell 2011-02-25 14:07:59

+0

感谢您的回答。正在使用name =“。$ name”。好的在查询中使用? – Tom 2011-02-25 14:08:23

+0

当我使用它时,它似乎将我的所有div都不同步。直到我尝试显示'0'的结果为止。 divs也在php里面。 – Tom 2011-02-25 14:10:49

1
echo "You have had ".intval($deletedtotal_row['deleted'])." messages deleted"; 
+0

不确定为什么有人低估了这一点,但我们不必纠正错别字,但建议更好的代码。 – Lekensteyn 2011-02-25 14:10:29

0
if(mysql_num_rows($result)==0) { 
    echo 'no rows'; 
} else { 
    echo "You have had " . $deletedtotal_row['deleted'] ." messages deleted"; 
} 
+0

我在回声中调用它,所以这不起作用。 – Tom 2011-02-25 14:18:14

+0

你可以设置一个var然后在回声中使用它 - 但我认为使用intval()可能是一个更好的解决方案。 – 2011-02-25 14:20:09

0

谢谢大家。我得到了它的工作:

echo "You have had ".($deletedtotal_row['deleted'] ? $deletedtotal_row['deleted'] : '0')." messages deleted"; 
+0

如果您使用某人的回答,您应该通过接受他们的回答来承认它。它有助于你的接受评级,这使得人们更倾向于帮助你。这也是堆叠交换网络的基础。 – xzyfer 2011-02-26 06:28:26

0

使用:

sprintf("You have had %d messages deleted", $deletedtotal_row['deleted');