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

时间:2013-09-13 22:09:39

标签: php mysql sql mysqli

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

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

$param = $fgmembersite->UserEmail();

$query = mysqli_query($con, "SELECT username FROM Users1 WHERE email = '$param'
");

while ($row = mysqli_fetch_array($query)){
echo $row['username'] ;
    }

我正试图在另一个查询中找到一种方法来使用$ row ['username'] ...

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

这不会给我一个编码错误,但它不起作用。用户名行显然不能按照我正在尝试的方式从单独的查询中获取。

我已经尝试过我能想到的每一种组合,但没有任何对我有用。非常感谢任何帮助。

4 个答案:

答案 0 :(得分:1)

尝试子查询

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

答案 1 :(得分:1)

那么你应该把你的第二个查询放在:

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

现在循环在mysql_fetch_array返回NULL并且您尝试插入第二个查询时为NULL时结束。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

您可以将查询加入一个:

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