我有 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/