Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 简单sql多表查询_Php_Sql - Fatal编程技术网

Php 简单sql多表查询

Php 简单sql多表查询,php,sql,Php,Sql,我正在我的网站上编程一个聊天室,但我对php真的很陌生。我希望用户能够与在同一个游戏团队中玩过的用户(知道用户可以一起参加不同的团队)以及在同一领域工作的用户聊天 假设有三个表:帐户用户表、区域表、游戏表 我有一个函数,它返回的查询如下 function myfunction($userid){ $games_user=mysql_query('select theme from games where games.userid="'.$userid.'"'); $games_theme

我正在我的网站上编程一个聊天室,但我对php真的很陌生。我希望用户能够与在同一个游戏团队中玩过的用户(知道用户可以一起参加不同的团队)以及在同一领域工作的用户聊天

假设有三个表:帐户用户表、区域表、游戏表

我有一个函数,它返回的查询如下

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;
}
function myfunction($userid){
$games\u user=mysql\u query('select theme from games where games.userid=“”.$userid.”);
$games\u theme=mysql\u fetch\u数组($games\u user);
$sql=(“选择userid、username、area.userid
从帐户
左连接区域
on account.userid=area.userid
左撇子游戏
on account.userid=games.userid
其中account.userid“.mysql\u real\u escape\u string($userid)。”和“.”(在数组中(games.theme,$games\u theme))。”和area.userid=1
);
返回$sql;
}
重新格式化:

$sql=”
选择userid、username、area.userid
从帐户
account.userid=area.userid上的左连接区域
LEFT JOIN games ON account.userid=games.userid
其中account.userid“.mysql\u real\u escape\u字符串($userid)。”
和“.”(在数组(games.theme,$games\u theme)中)
和area.userid=1
";
但它真的不起作用,我想我有语法问题。 我真的不明白in_数组是如何被索引的,我也不知道如何以一种更简单的方式进行查询


有人能帮忙吗?

我仍然不能完全确定您在做什么,但我认为这正是您想要的;您可以在一个查询中完成:

<?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;
}
?>

您任意地将PHP函数
粘贴在_array()中
进入一个查询。你想用它做什么?看起来你想知道列值
games.theme
是否与
$games\u theme
数组中的一个值匹配,该数组是从你的第一个查询中提取的一行。你应该能够通过突出显示代码来判断你的语法错误(最后是一个缺少的
”)。帮你自己一个忙,研究一下你的查询格式;与之相比,你所拥有的内容很难阅读。如果
userid
存储为整数,那么就不必执行
“…”.$userid.“
。另外,看看你的,@Michael是对的;你可能想要一个;
在数组中()
是PHP。更准确地说:你有一个userid参数,这个用户参与了很多主题的游戏,我想获取所有参与相同主题的用户以及区域id为1的用户。因此,我获取帐户表中的所有用户,然后我将其与区域id为1的用户交叉,最后我将latte res交叉ult与所有参与相同$users(参数)主题的主题用户。我是否清楚?我的查询是否不适用?
<?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;
}
?>