我正在尝试在另一个查询中使用查询中的行。
此查询正确显示当前登录用户的用户名:
$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'] . "' ");
这不会给我一个编码错误,但它不起作用。用户名行显然不能按照我正在尝试的方式从单独的查询中获取。
我已经尝试过我能想到的每一种组合,但没有任何对我有用。非常感谢任何帮助。
答案 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'