2010-05-20 62 views
1

我使用GET来获取结果的ID。PHP中的SQL返回错误

$id = $_GET['id']; 

然后我用下面的代码:

 <? 
    $q = $database->friendlyDetails($id); 
    while($row=mysql_fetch_assoc($q)) 
    { 
     $hu = $row['home_user']; 
     $ht = $row['home_team']; 
     $hs = $row['home_score']; 
     $au = $row['away_user']; 
     $at = $row['away_team']; 
     $as = $row['away_score']; 
     $game = $row['game']; 
     $name = $row['name']; 
     $match = $row['match_report1']; 
     $compid = $row['compid']; 
     $date = $row['date_submitted']; 
     $sub = $row['user_submitted']; 
    } 
    ?> 

而且friendDetails-

function friendlyDetails($i) 
    { 
    $q = "SELECT * 
     FROM ".TBL_SUB_RESULTS." 
     INNER JOIN ".TBL_FRIENDLY." 
     ON ".TBL_FRIENDLY.".id = ".TBL_SUB_RESULTS.".compid 
     WHERE ".TBL_SUB_RESULTS.".id = '$i'"; 
    return mysql_query($q, $this->connection); 
    } 

出于某种原因,该代码将只返回的是在ID = 1。 任何人都可以看到任何明显的我做错了吗?

编辑 SUB成绩表

ID | compid | home_user | home_team | away_user | away_team | home_score | away_score | report1 |日期|提交

FRIENDLY TABLE

ID |名称|游戏

+0

你的数据库看起来像什么?你能发几行吗? – jordanstephens 2010-05-20 21:16:22

+0

什么是错误? – 2010-05-20 21:17:08

+4

您可能还想清理输入。使用'$ _GET ['id']'的原始内容运行查询是危险的。 – thetaiko 2010-05-20 21:20:32

回答

0

你试过做一个左连接,而不是内部连接?试试这个,

function friendlyDetails($i) { 
    $q = "SELECT * 
      FROM ".TBL_SUB_RESULTS." 
      LEFT JOIN ".TBL_SUB_RESULTS." 
      ON ".TBL_SUB_RESULTS.".compid = ".TBL_FRIENDLY.".id 
      WHERE ".TBL_SUB_RESULTS.".id = $i"; 
    return mysql_query($q, $this->connection); 
} 
+0

试过这个,仍然没有工作。 我无法得到我的头。它只想处理id = 1。我不知道? – sark9012 2010-05-20 22:08:34

+0

在你的数据库中....我假设在第一个表中有多个compid值....并且这些都与友情表中的id相关? $ _GET有什么价值?并且compid col中的那些值是否超过1? – Metropolis 2010-05-20 22:10:13

+0

是的,如果来自GET的id = 1,查询将返回正确的值。 但是,如果我然后去,id = 2,返回的值仍然是id = 1相同。所以它几乎每次都返回id = 1。如果没有id = 1,则不返回任何内容。 compid中的值可以是1,2,3,4,5,具体取决于它是否在友好表中。 – sark9012 2010-05-20 22:18:53