0

我有 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);

}

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

但我想根据第一个表的输出 uid 从第二个表“业务”中获取业务名称行,如 ABC 业务、XYZ 业务、123 业务等。简而言之,我想要 business_name 输出而不是第二个表的 uid 输出。请帮我。非常感谢你。

4

2 回答 2

0

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

因此,第一步是修复您损坏的查询!

很难从查询中说出您想要什么,但是您将用户表与业务表混合在一起,所以我猜您真的想要基于用户的业务名称。

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);
于 2013-01-02T18:56:30.927 回答
0

非常感谢克里斯和 Jormundir。加入这两个表确实解决了我的问题。这就是我所做的:

$stmt = $pdo->prepare("SELECT business.uid, users.business_name FROM business,users WHERE business.uid = users.uid AND business.category= ?");

在 html 页面中,我放置了“business_name”数组而不是“uid”,无论我在寻找什么,我都得到了结果。

非常感谢你们所有人。

于 2013-01-03T05:25:02.670 回答