2012-07-15 92 views
0

我在我的网站上编程聊天室,但我真的很新的PHP。我希望用户能够与在同一个游戏团队中玩过的用户(知道用户可以一起参与不同团队)以及在同一区域工作的用户聊天。简单的sql多表查询

假设有三个表:帐户用户的表,该地区的牛逼能,games'table

我有一个返回我的查询,看起来像

function myfunction($userid){ 

$games_user=mysql_query('select theme from games where games.userid="'.$userid.'"'); 
$games_theme = mysql_fetch_array($games_user); 

$sql = ("select userid, username, area.userid 

    from account 
     left join area 
      on account.userid = area.userid  

     left join games 
      on account.userid = games.userid 

    where account.userid <> '".mysql_real_escape_string($userid)."' and '".(in_array(games.theme,$games_theme))."' and area.userid=1 
); 
return $sql; 
} 

重新格式化函数:

$sql = " 
SELECT userid, username, area.userid 
FROM account 
LEFT JOIN area ON account.userid = area.userid  
LEFT JOIN games ON account.userid = games.userid 
WHERE account.userid <> '".mysql_real_escape_string($userid)."' 
    AND '".(in_array(games.theme,$games_theme))."' 
    AND area.userid = 1 
"; 

但它确实不起作用,我认为我有语法问题。 我真的不明白如何in_array索引,我不知道如何以更简单的方式做该查询

任何人都可以帮忙吗?

+0

您正在任意地将PHP函数'in_array()'粘贴到查询中。你想用这个来完成什么?看起来您想知道列值“games.theme”是否与'$ games_theme'数组中的某个值相匹配,这是从您的第一个查询中提取的一行? – 2012-07-15 18:38:19

+1

你应该可以通过代码告诉你突然发现你的语法错误(最后缺少'''''''''帮你一个忙,并且处理你的查询格式;你有什么难以阅读的如果'userid'存储为整数,则不需要执行''..''。[http://codepad.org/XZOKwncG),IMO。 – 2012-07-15 18:41:47

+0

。 $ userid。 '''''。 – hjpotter92 2012-07-15 18:43:17

回答

2

我仍然不完全确定你在做什么,但我认为这是你想要的;您可以在单个查询中执行此操作:

<?php 
function myfunction($userid){ 
    $id = mysql_real_escape_string($userid); 
    $sql = "SELECT userid, username, area.userid 
     FROM account 
      LEFT JOIN area 
       ON account.userid = area.userid  
      LEFT JOIN games 
       ON account.userid = games.userid 
     WHERE account.userid<>'$id' AND area.userid=1 
      AND games.theme IN (SELECT theme FROM games WHERE games.userid='$id') 
    "; 
    return $sql; 
} 
?> 
+0

正是!非常感谢! – 2012-07-15 18:58:15