我正在尝试在另一个查询中使用查询中的行。
此查询正确显示当前登录用户的用户名:
$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')