2015-10-14 126 views
0

我正在尝试获取特定项目上的评论数量。MySQL SELECT COUNT returns NULL

$stmt1 = $conn->prepare("SELECT COUNT(r_value) FROM ratings WHERE r_snippet=? AND r_value=3 OR r_value=2"); 
$stmt2 = $conn->prepare("SELECT COUNT(c_id) FROM comments WHERE c_snippet=?"); 

foreach ($snippets as $snippet){ 

    $s_id = $snippet['s_id']; 
    $s_thumb = $snippet['s_thumb']; 

    $stmt1->bind_param("i",$s_id); 
    $stmt1->execute(); 
    $stmt1->bind_result($numLikes); 
    $stmt1->fetch(); 

    $stmt2->bind_param("i",$s_id); 
    $stmt2->execute(); 
    $stmt2->bind_result($numComments); 
    $stmt2->fetch(); 

?> 

    ** HTML here **  

<?php 

} 

$stmt1->close(); 
$stmt2->close(); 

?> 

$numLikes工作正常,但$numComments似乎返回NULL(从var_dump),我不知道为什么。在phpMyAdmin的SQL工作正常,返回评论数...

+0

后最少的代码,请与硬编码值替换bind_param。另外,把一个查询和检查错误:'printf(“错误:%s。\ n”,$ stmt1->错误);' – danihp

+0

'错误:试图读取一行,而没有关联的结果集声明。' – frosty

回答

0

你可能想改变这个你的第一个查询

... AND r_value=3 OR r_value=2 

... AND (r_value=3 OR r_value=2) 

或本

... AND r_value IN (2,3) 

但是对于s的Econd查询尝试一些简单的只是为了调试

$stmt2 = $conn->prepare("SELECT * FROM comments WHERE c_snippet=10"); 

然后

$stmt2 = $conn->prepare("SELECT count(*) FROM comments WHERE c_snippet=10"); 
+0

你的代码限制了更多的范围。 – danihp

+0

谢谢,但它不能解决'$ numComments'为NULL问题 – frosty

+0

好的,我只是意识到问题是第二个查询。尝试一些简单的调试,如我在我的回答更新 –