1

クエリの行を別のクエリで使用しようとしています。

このクエリは、現在サインインしているユーザーのユーザー名を正しく表示します。

$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

4 に答える 4

1

サブクエリを試す

SELECT * FROM messages WHERE to_user in (SELECT username FROM Users1 WHERE email = '$param')
于 2013-09-13T22:13:31.527 に答える
1

クエリを 1 つに結合できます。

SELECT `messages`.*
FROM `messages`
    JOIN `Users1`
        ON `Users1`.`username`=`messages`.`to_user`
WHERE
    `Users1`.`email`='$param'
于 2013-09-13T22:14:54.820 に答える
1

2 番目のクエリを while 内に配置する必要があります。

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

mysqli_fetch_array が NULL を返し、その NULL を 2 番目のクエリに挿入しようとすると、ループが終了します。

于 2013-09-13T22:16:51.233 に答える
0

2 つのクエリを 1 つに結合できます。

SELECT * FROM messages WHERE to_user = (SELECT username FROM Users1 WHERE email = '$param')
于 2013-09-13T22:14:30.530 に答える