2013-04-27 103 views
0

我想使用PHP,Ajax,JS向我的网站添加实时通知。 它要求PHP文件正常并将其加载到我的页面上,因此没有任何错误,但是PHP返回的行数不正确,并且文件中似乎没有任何问题,所以我非常困惑。PHP - 返回不正确的值

这是我的PHP:

<?php 
include("config.php"); 

$query = "SELECT * FROM notifications WHERE user = '$myUser' AND isread = '0'"; 
$result = mysql_query($query); 
$num = mysql_num_rows($result); 

if($num == 0){ 
print ""; 
} else if($num !== 0){ 
print "<span class='notification'>&nbsp;&nbsp;" . $num . "&nbsp;&nbsp;</span>"; 
} 
?> 

如果没有任何行返回,然后它回“”,但有我的用户会话测试设置一个通知,并将其标记为未读。如果在页面上使用完全相同的查询,它会完全加载,因此不知道这里发生了什么。

+0

'$ nNum' =>'$ num' – Musa 2013-04-27 23:34:32

+0

当我在这里发布代码时,我忘了更改该代码,即使未定义,它将返回返回0行所示的if语句的空白打印。 – Engine 2013-04-27 23:36:00

+0

如果您即将开始真正的编码,您应该至少了解if语句。为什么'else if'而不是'else'? – hek2mgl 2013-04-27 23:38:45

回答

1

此行应该是这样的:

else{ 
print "<span class='notification'>&nbsp;&nbsp;" . $nNum . "&nbsp;&nbsp;</span>"; 
} 
?> 

或者

else if($num != 0){ 
    print "<span class='notification'>&nbsp;&nbsp;" . $num . "&nbsp;&nbsp;</span>"; 
} 
?> 

------------------ EDITED ------ ---------------------

请不要回声这样:

<?php 
include("config.php"); 

$query = "SELECT * FROM notifications WHERE user = '$myUser' AND isread = '0'"; 
$result = mysql_query($query); 
$num = mysql_num_rows($result); 

echo $query; //THIS and copy that and put this directly on your mysql manager 

if($num == 0){ 
print ""; 
} else if($num != 0){ 
print "<span class='notification'>&nbsp;&nbsp;" . $num . "&nbsp;&nbsp;</span>"; 
} 
?> 

PS:不要使用mysql扩展...去mysqli或PDO ...你的代码易受sql注入攻击

+0

这不会有什么区别,它仍然会显示第一个打印,如果我在其中键入“错误”,就是我的页面上返回的内容。 – Engine 2013-04-27 23:37:41

+0

我编辑我的答案秒前 – Hackerman 2013-04-27 23:38:15

+0

这仍然不会改变任何东西,这是你正在编辑的第二个打印,它甚至没有达到,查询返回0行,虽然有一个应该返回的行。 – Engine 2013-04-27 23:40:29