php脚本表现得很奇怪,即使一个不存在也会显示记录

时间:2010-07-29 09:39:34

标签: php mysql

我有一个奇怪的问题。每次我在php中执行此查询时,即使查询为空,也会得到输出“Challenge”(如果为空,应该得到“emptyq”)当我在phpmyadmin中测试它时,一切都很好,查询应该是空的。我也试图回应$detectChallengeRes[0][1]而一无所获。我无法找到问题,非常感谢任何帮助。 该脚本假设查看数据库并检查是否存在与当前userID相关的任何挑战,其基本上是检查用户是否已被另一个用户挑战的脚本,当前页面上的gameID与当前页面上的gameID相同在数据库中,用户尚未完成挑战($yourscore==0)。

$detectChallengeRes = query("SELECT * FROM `AMCMS_challenges` WHERE `gameid`=$gameid AND `winner`=0 AND (`userkey1`=$user OR `userkey2`=$user);");
        if($detectChallengeRes[0][1]!=$user && $detectChallengeRes[0][2]==$user) {
            $yourscore = $detectChallengeRes[0][6]; //Check your score to see if you've already played
        } elseif ($detectChallengeRes[0][2]!=$user && $detectChallengeRes[0][1]==$user) {
            $yourscore = $detectChallengeRes[0][5]; //Check your score to see if you've already played  
        } 
if ($detectChallengeRes!=NULL && $yourscore==0) {
echo 'Challenge';   
} else {
echo 'emptyq';
}

表格结构:

CREATE TABLE IF NOT EXISTS `AMCMS_challenges` (
  `primkey` int(11) NOT NULL auto_increment,
  `userkey1` int(11) NOT NULL,
  `userkey2` int(11) NOT NULL,
  `gameid` int(11) NOT NULL,
  `winner` int(11) NOT NULL,
  `score1` int(11) NOT NULL,
  `score2` int(11) NOT NULL,
  PRIMARY KEY  (`primkey`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

3 个答案:

答案 0 :(得分:0)

$ detectChallengeRes将是boolean false或mysql结果资源。它永远不会为空。

答案 1 :(得分:0)

这可能无法解决您的问题,但看起来它显示的是以前的数据。把它放在你的脚本之前

unset($detectChallengeRes);

答案 2 :(得分:0)

在尝试处理查询之前测试查询返回的行数