我想根据json-php中的第一个表行输出从第二个表获得输出结果


I want to get output result from second table based on first table rows output in json-php

我有PHP知识,但我仍在学习Json。首先我想弄清楚我在找什么。我在mysql数据库中有两个表,table1(users)和table2(business)。表"users"包含这些行(id、uid、business_name),表"business"包含这些行(id、uid、category)。

我有以下代码在PHP页面:

if(isset($_GET['catName'])) {
    $cat = $_GET['catName'];
    $stmt = $pdo->prepare("SELECT id, uid, category FROM business WHERE category = ? ");
    $stmt->execute(array($_GET['catName']));
    $arr = $stmt->fetchAll(PDO::FETCH_ASSOC);
}

我能够得到json输出在我的html页面,例如。101、102、103等等。

但是我想根据第一个表的输出uid从第二个表"Business"中获得ABC Business、XYZ Business、123 Business等business_name行。简而言之,我想要第二个表的business_name输出而不是uid输出。请帮帮我。非常感谢。

您有一个关联数组,其中包含查询的结果。听起来您想要企业名称,但您没有查询它们。

所以第一步是修复你的破碎的查询!

很难判断您想从查询中得到什么,但是您将用户表和业务表混合在一起,所以我猜您确实想要基于用户的业务名称。

SELECT b.business_name FROM users u JOIN business b ON u.uid = b.uid WHERE category = ?

然后,您必须正确访问$arr变量以获取业务名称

foreach ($arr as $bus_sql_result) {
    echo $bus_sql_result['business_name']."'n";
}

这不是JSON格式,我不确定JSON和你想要的有什么关系,但如果你真的想要这样,你可以试试像

$business_names = array();
foreach ($arr as $bus_sql_result) {
    $business_names[] = $bus_sql_result['business_name'];
}
echo json_encode($business_names);

感谢Chris和Jormundir。把两张桌子连在一起真的解决了我的问题。这是我所做的:

$stmt = $pdo->prepare("SELECT business. SELECT ")uid,用户。business_name FROM business,users WHERE business。Uid = users。uid和业务。类别= ?");

在html页面中,我已经把"business_name"数组而不是"uid",我已经得到了我正在寻找的结果。

非常感谢大家。