我有一个方法可以从我正在创建的锦标赛系统中返回数据。我有一个问题,即 INNER JOIN 查询总是返回一行,无论 WHERE 子句是否为真。
在数据库中有两个锦标赛,都有一个 T.game = '1' - 但是如果我检查 T.game = '2' 的查询,它仍然会根据返回一行mysql_num_rows()
,当我print_r()
得到结果数组时,它除了 COUNT() 行之外是空的,但是 WHERE 子句不应该找不到任何行并将其相应地描述为mysql_num_rows()
?
我想我的主要问题是如何阻止 COUNT(P.id) 始终显示,即使比赛表中没有匹配的行
public function fetchTournaments($gameID){
if($gameID == "" || $this->hasChar($gameID) || $this->hasSymb($gameID)){
$this->_errorMsg = "Invalid Game ID.";
return false;
}else{
$query = mysql_query("SELECT
T.id,
T.name,
T.description,
T.checkin,
DATE_FORMAT(T.date,'%b %d, %Y @ %h:%i %p') AS date,
COUNT(P.id) AS playernum
FROM tournaments T
INNER JOIN players P
ON T.id = P.tourney_id
WHERE T.game='{$gameID}'") or die(mysql_error());
$result = mysql_num_rows($query);
if($result > 0){
echo $result;
$output = mysql_fetch_array($query);
return $output;
}else{
$this->_errorMsg = "There are no tournaments for this game.";
return false;
}
}
}