gpt4 book ai didi

php - sql 的 order by 子句不适用于与第一个表相关的第二个表

转载 作者:行者123 更新时间:2023-11-29 11:54:27 24 4
gpt4 key购买 nike

我有两张 table usersfriends_inUsers table 是我的主表,其中存储每个注册用户信息。 Friends_in表是一位 friend 向另一位 friend 请求发送的信息存储为列 from_fren 的地方和to_fren .现在我正在比较我的friends_infrom_fren列数据 userspeople_name我首先从 users 获取数据函数中的表如下所示:-

    $query = "SELECT person_name FROM users"; 
try
{
$stmts = $db->prepare($query);
$result = $stmts->execute();
if($result == true)
{
$done = true;
}
}
catch(PDOException $ex)
{
die("Failed to run query: " . $ex->getMessage());
}
if($done)
{
$rows = $stmts->fetchAll();
return $rows;
}
}

$data = forallUsers();

现在,我得到了所有用户详细信息,之后我使用了 foreach循环并比较 users表及其列person_namefriends_in表及其列 from_fren如下所示:-

   foreach($data as $row){
require('My database info is here');
$done_two = false;
$other = $row['person_name'];
$realuser = $_SESSION['username'] ['username'];

$query = 'SELECT from_fren,to_fren FROM friend_in WHERE (from_fren = :ot and to_fren = :me)';
$query_paramt = array(
':ot' => $other,
':me' => $realuser
);

try
{
$stmts = $db->prepare($query);
$results = $stmts->execute($query_paramt);
if($results == true)
{
$done_two = true;
}
}
catch(PDOException $ex)
{
die("Failed to run query: " . $ex->getMessage());
}
if($done_two) {
//do something....
}
}

我想选择from_frento_fren两列来自 friend_in table 。 $other是发送 fren 请求的人,并且 $realuser是接收 fren 提案的人(它将是 session 用户)。

****但我的主要问题是****

当我在我的网站上显示此内容时,我得到 from_fren 的数据和to_frenORDER BY ID ASCusers我的意思是我想向 session_user 显示最新的 friend 请求信息.Data我成功获得,但问题是这些数据是如何显示在order中的按 ID ASCusers表。

我怎样才能显示session_user在这种情况下有新的 friend 请求?我尝试在 friend_in 中创建一个新专栏按名称表 latest并设置类型datetime在数据库和 php now() .我更改了过去的代码,现在用于存储当前的 datetime当一个用户向另一个用户发送 fren req 时。之后我使用 ORDER BY条款friend_inlatest栏目DSEC .这是我的新代码:-

   foreach($data as $row){
require('My database info is here');
$done_two = false;
$other = $row['person_name'];
$realuser = $_SESSION['username'] ['username'];

$query = 'SELECT from_fren,to_fren FROM friend_in WHERE (from_fren = :ot and to_fren = :me) ORDER BY latest DESC';
$query_paramt = array(
':ot' => $other,
':me' => $realuser
);

try
{
$stmts = $db->prepare($query);
$results = $stmts->execute($query_paramt);
if($results == true)
{
$done_two = true;
}
}
catch(PDOException $ex)
{
die("Failed to run query: " . $ex->getMessage());
}
if($done_two) {
//do something....
}
}

但我仍然无法获取该 session 用户的最新频率请求。仍然是 friend_in表列数据的工作方式类似于 ORDER BY id ASC其中users表。我怎样才能使我的第二个代码工作?

最佳答案

SELECT person_name FROM users 获取所有用户并按 id desc 排序,当您在 foreach 中循环时,您总是会获得具有更高 id 的用户,而不是第二个查询中的最新用户。

我认为没有必要从表users中获取所有用户然后循环它们,只需尝试像这样使用sql:

select from_fren, to_fren, users.person_name from friend_in, users where person_name = from_fren and to_fren = :me order by latest desc limit 1

关于php - sql 的 order by 子句不适用于与第一个表相关的第二个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33459897/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com