php - 循环sql SELECT 查询

标签 php mysql sql

我有 2 个表,一个包含消息,另一个包含用户。

消息表包含两个 ID,即“UserOne”和“UserTwo”Id。

我选择其他用户 ID(不是登录的用户 ID)并仅通过此代码获取唯一 ID

$usersEmails = array();
    $query = "SELECT `UserOne`, `UserTwo` FROM `messages` WHERE (`UserOne`='$id' OR `UserTwo`='$id')";
    if($query_run = mysqli_query($connect, $query)){
        $num_rows = mysqli_num_rows($query_run);
        if($num_rows > 0){
            while($get = mysqli_fetch_assoc($query_run)){
                $userOne = $get['UserOne'];
                $userTwo = $get['UserTwo'];

                if($userOne != $id){
                    array_push($usersEmails, $userOne);
                }else if($userTwo != $id){
                    array_push($usersEmails, $userTwo);
                }
            }
        }
    }
    $loopStop = count($usersEmails);

问题就从这里开始了..

我想使用我插入到名为 $usersEmails 的数组中的 ID 来选择那些唯一的用户电子邮件

我使用此代码来显示唯一用户电子邮件:

for($x = $loopStop - 1; $x >= 0; $x--){
$query_two = "SELECT `Email` FROM `signup` WHERE `Id`='$usersEmails[$x]'";
$query_two_run = mysqli_query($connect, $query_two);
$get_two = mysqli_fetch_assoc($query_two_run);
$email = $get_two['Email'];
echo "$email";}

我知道循环 SQL 查询语句不好,而且成本也很高,所以有什么想法吗?

谢谢,新年快乐

最佳答案

尝试这个查询

SELECT s.`Email` FROM `messages` m
inner join `signup` s on s.`Id`= m.`UserOne`
WHERE m.`UserOne`='$id'

union 

SELECT s.`Email` FROM `messages` m WHERE
inner join `signup` s on s.`Id`= m.`UserTwo`
WHERE m.`UserTwo`='$id'

关于php - 循环sql SELECT 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34568933/

相关文章:

php - PHP 代码中下划线的使用

mysql - mysql表分组时检索最后一条记录

sql - 选择所有使用别名的地方

mysql - MySQL DB 中的外键约束给出错误

php - MYSQL 5.5.50 和 5.7.13 的区别

php - 在 While PHP 问题中使用 $_POST

php - WordPress 更新元不工作

php - Android:无法向 MYSQL 发送数据。导致崩溃

mysql - SQL使用join将数据传输到另一个表

SQL Select - 合并具有匹配 ID 的行