MySQL查询WHERE语句哪个是查询本身?

JMR*_*ies 0 php mysql

因此,我将首先尝试清楚地解释我的目标:

首先,我想查询数据库中的一个表以获取用户名列表.

其次,我想获取这些用户名,并查询数据库中的另一个表,并仅返回这些用户名出现在用户名字段中的行.

最后,我想获取此输出(现在以JSON数组形式),并将其返回给请求客户端.

我的查询现在看起来像这样:

$query = mysql_query("SELECT * FROM tagusers WHERE username = 
    (SELECT userA FROM friendtable WHERE userB = '$username')");
Run Code Online (Sandbox Code Playgroud)

当WHERE语句产生1个结果时,这个工作原理.因此,如果我只获得一个返回的userA,它可以正常工作.但如果我得到多个,我会收到一堆错误.

以下是完整的代码:

if (isset($_POST['username'])) {
$username = $_POST['username'];


$connect = mysql_connect("localhost", "root", "");
mysql_select_db("TagDB");

$query = mysql_query("SELECT * FROM tagusers WHERE username = 
    (SELECT userA FROM friendtable WHERE userB = '$username')");

    }

while ($e = mysql_fetch_assoc($query)) {
    $output[] = $e;
}

$output = json_encode($output);

print $output;
Run Code Online (Sandbox Code Playgroud)

我在查询行上收到以下错误:

*警告:mysql_query()[function.mysql-query]:无法在第21行的C:\ wamp\www\tag\appgetfriendinfo.php中保存结果集*

所以我真正需要知道的是,我如何在MySQL中编写该查询以便返回一个行数组?

Dan*_*man 5

您根本不需要子查询,通常可以从连接中获得更好的性能.确保在tagusers.username,friendtable.userA和friendtable.userB上定义了索引

SELECT
  tagusers.*
FROM
  tagusers
INNER JOIN
  friendtable  
ON
  tagusers.username = friendtable.userA
AND
  friendtable.userB = '$username'
Run Code Online (Sandbox Code Playgroud)