所以在我的phpmyadmin数据库中,我有两个表,'用户'和'调色板'。在我的PHP脚本中,我正在解析来自“用户”的数据并在单独的html文件上输出信息。我的目标是在表'palette'上执行SQL查询,但只搜索'users'的结果。例如,我的“用户”查询返回100个用户。我想现在在“调色板”上搜索相同的100个用户,以返回其匹配的“调色板”信息。类似的东西:
$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)) {
...
我想要的结果与上面的代码类似。这可能吗?什么是最好的方法。以下是我搜索活动“用户”的工作代码。
'palette'表包含有关'users'中按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"]." ".$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 :(得分:0)
您可以在查询中使用JOIN功能在某些条件下连接两个表的记录。因此,只需一个查询,您就可以访问所需的所有数据。此外,您的PHP代码的复杂性也会降低。
答案 1 :(得分:0)
您可以使用
为查询创建视图创建视图
现在,您可以在该视图上执行类似于表格的选择。
http://www.w3schools.com/sql/sql_view.asp
听起来您可能想要使用JOIN来简化单个查询:http://www.w3schools.com/sql/sql_join.asp
答案 2 :(得分:0)
“我的目标是在表'调色板'上执行SQL查询,但只搜索'用户'的结果。”
上面很难弄清楚你想要什么,但一个合格的猜测就是你正在寻找如何加入表格
示例:强>
在这种情况下,基于users.id和palette.user_id的值之间的关系,在同一查询中选择了两个表。
SELECT * FROM palette
JOIN users ON (users.id = palette.id)
WHERE (users.subscription_plan!=NULL)