0

我有 5 张桌子。我需要从一个表中选择 4 个最近的帖子,并在四个单独的变量中获取这些帖子的 ID,以用于来自其他表的查询:

SELECT user FROM table1 WHERE subcategory = "$input" ORDER BY id DESC LIMIT 4;

所以我有我需要的东西。现在,我如何将这四个用户 ID 结果分配给新变量,以便在同一页面上的未来查询中使用。

我需要像这样存储它:

$user1 = "Sue";
$user2 = "Dave";
$user3 = "Alicia";
$user4 = "Tim";

所以我可以这样使用它:

SELECT * FROM table2 WHERE user = $user1;
SELECT * FROM table2 WHERE user = $user2;
SELECT * FROM table2 WHERE user = $user3;
SELECT * FROM table2 WHERE user = $user4;

不要混淆这个问题,但是:最终目标是拥有多行但只有四列,其中行中的所有数据都由顶行中的 USER 排序。请务必注意,因为每组行都由其下方数据中包含的内容的描述分隔。这些只是简单的直列。像这样的东西:

Sue            Dave             Alicia             Tim
Sue Profile    Dave Profile     Alicia Profile     Tim Profile
>>Answers to questions about work:
Sue Income     Dave Income      Alicia Income      Tim Income
Sue Years      Dave Years       Alicia Years       Tim Years
>>Answers to questions about school:
Sue Degree     Dave Degree      Alicia Degree      Tim Degree
Sue Schools    Dave Schools     Alicia Schools     Tim Schools
>>Answers to questions about life:
Sue Born       Dave Born        Alicia Born        Tim Born
Sue Parents    Dave Parents     Alicia Parents     Tim Parents

如果我可以将 id 结果读入单独的变量,那么对于每个部分(问题),我可以执行以下操作:

SELECT * FROM income WHERE user = "Sue";
SELECT * FROM income WHERE user = "Dave";
SELECT * FROM income WHERE user = "Alicia";
SELECT * FROM income WHERE user = "Tim";

SELECT * FROM degree WHERE user = "Sue";
SELECT * FROM degree WHERE user = "Dave";
SELECT * FROM degree WHERE user = "Alicia";
SELECT * FROM degree WHERE user = "Tim";
4

3 回答 3

0

如果您不想使用 JOINS,那么在执行第一个查询后,您应该使用 foreach 循环...

$user=array(); // i would suggest you for making an array
foreach($result_array as $key->$value)
{
    //here you will get the ids in $value['user']
    // and then you can use them in your queries
    // so no need to store them in different variables and remembering them.
    Edited:
    $user[$key] = $value['user'];
}
于 2012-12-08T20:21:54.290 回答
0

虽然您所要求的可以这样实现:

$id=1;
${"user".$id}="Sue";

这样 $user1 就会有“Sue”,为此目的使用数组会很容易,如下所示:

$id=1;
$user[$id]="Sue";

或者更好的是,尝试在查询中使用 Join 一次获取所有数据,然后根据您的需要重新格式化。

于 2012-12-08T20:08:30.183 回答
0

您应该更好地使用 JOINS 然后运行多个查询。下面是代码...

SELECT t1.user, t2.* FROM table1 as t1 LEFT JOIN table2 as t2 ON t1.id = t2.user_id WHERE t1.subcategory = "$input" ORDER BY t1.id DESC LIMIT 4

我希望您可以以t1.id = t2.user_id的速度更改两个表中的相同键

于 2012-12-08T20:07:45.370 回答