在另一个查询中使用查询结果行


Use Query Result Row in Another Query

我正在尝试在另一个查询中使用查询中的行。

此查询正确显示当前登录用户的用户名:

$param = $fgmembersite->UserEmail();
$query = mysqli_query($con, "SELECT username FROM Users1 WHERE email = '$param'
");
while ($row = mysqli_fetch_array($query)){
echo $row['username'] ;
    }

我正在尝试找到一种方法在另一个查询中使用$row['用户名'],例如...

$sql = mysqli_query($con, "SELECT * FROM messages WHERE to_user = '" . $row['username'] . "' ");

这不会给我编码错误,但它不起作用。用户名行显然不能像我尝试的那样从单独的查询中获取。

我已经尝试了我能想到的所有组合,但没有任何东西对我有用。任何帮助非常感谢。

尝试子查询

SELECT * FROM messages WHERE to_user in (SELECT username FROM Users1 WHERE email = '$param')
您可以将

查询合并为一个:

SELECT `messages`.*
FROM `messages`
    JOIN `Users1`
        ON `Users1`.`username`=`messages`.`to_user`
WHERE
    `Users1`.`email`='$param'
好吧,

您应该将第二个查询放在其中,同时:

while ($row = mysqli_fetch_array($query)){
  echo $row['username'] ;
  $sql = mysqli_query($con, "SELECT * FROM messages WHERE to_user = 
    '" . $row['username'] . "' ");
}

现在,当mysqli_fetch_arrray返回 NULL 并且您尝试插入到第二个查询中的 NULL 时,循环结束。

您可以将两个查询合并为一个查询。

SELECT * FROM messages WHERE to_user = (SELECT username FROM Users1 WHERE email = '$param')