2014-02-08 68 views
0

因此,在我的phpmyadmin数据库中,我有两个表,“用户”和“调色板”。在我的PHP脚本中,我解析来自'用户'的数据并输出单独的html文件中的信息。我的目标是在表'调色板'上执行SQL查询,但只搜索'用户'的结果。例如,我的'用户'查询返回100个用户。我想现在在“调色板”上搜索那些相同的100个用户,以返回其匹配的“调色板”信息。例如:如何在以前的查询结果上执行SQL搜索

$pal_sql = "SELECT * FROM palette WHERE (user subscription_plan!='NULL')"; 
$pal_query = mysqli_query($dbs, $pal_sql); 
$activerPalUsers = mysqli_num_rows("pal_query); 
if(mysqli_num_rows($user_query) >= 1){ 
    while ($row = mysqli_fetch_array($user_query, MYSQLI_ASSOC)) { 
... 

我想要的结果与上面的代码类似。这可能吗?什么是最好的方法。以下是我的工作代码,用于搜索活动的“用户”。

“调色板”表包含有关“用户”中按id排序的每个用户的其他信息。我只想解析活动用户的调色板数据。第一个查询显示活动用户,但我无法检查用户是否仅在“调色板”表中处于活动状态。

<?php 
    $sql = "SELECT * FROM users WHERE subscription_plan!='NULL' ORDER BY id ASC"; 
    $user_query = mysqli_query($dbc, $sql); 
    $activeUsers = mysqli_num_rows($user_query); 
    if(mysqli_num_rows($user_query) >= 1){ 
     while ($row = mysqli_fetch_array($user_query, MYSQLI_ASSOC)) { 
      $userData .= "<tr>"; //general user information 
      $userData .= "<td>"; 
      $userData .= $row["id"]; 
      $userData .= "</td>"; 
      $userData .= "<td>"; 
      $userData .= $row["email"]; 
      $userData .= "</td>"; 
      $userData .= "<td>"; 
      $userData .= $row["firstname"]."&nbsp;".$row["lastname"]; 
      $userData .= "</td>"; 
      $userData .= "<td>"; 
      $userData .= $row["subscription_plan"]; 
      $userData .= "</td>"; 
      $userData .= "<td>"; 
      $userData .= $row["ship_name"]; 
      $userData .= "</td>"; 
      $userData .= "<td>"; 
      $userData .= $row["address"]; 
      $userData .= "</td>"; 
      $userData .= "</tr>"; 
     } 
    } else { 
     $userData = "<tr><td colspan='6' style='text-align: center;'><strong>No listings found...</strong></td></tr>"; 
    } 
?> 

让我知道我的问题是否有意义,如果需要,我可以尝试以不同的方式重新解释它。谢谢你的时间。

回答

0

“我的目标是在桌子‘调色板’,但只搜索执行SQL查询'用户'的结果。“

很难找出你想要通过上面的什么,但一个合格的猜测是,你正在寻找如何连接表

例子:

在这种情况下,选择了两个表在基于users.id和palette.user_id的值之间的关系的相同查询中)

SELECT * FROM palette 
JOIN users ON (users.id = palette.id) 
WHERE (users.subscription_plan!=NULL) 
+0

“用户”和“调色板”都有一个可以找到特定用户的“ID”字段。但是,'用户'可以确定用户是否处于活动状态或非活动状态,而'调色板'包含所有活动用户和非活动用户。我还可以加入吗?编辑:'palette'没有'subscription_plan'字段 – ryank

+1

尝试查询并查看它的作用。 – dvntehn00bz

+0

我不太明白。我已将obvius = fieldnames从user_id更改为id,将palette.subscription_plan更改为users.subscription_plan。你可以在你的问题中提供你的db-schema吗?我认为这会更容易找出你要求的东西。 – bestprogrammerintheworld

0

您可以在查询中使用JOIN功能在某些情况下连接两个表的记录。因此只需一个查询,您就可以访问所需的所有数据。而且你的php代码的复杂性也会降低。

+0

嗨,你能提供一个例子吗?我仍然试图了解JOIN如何解决我的问题 – ryank