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

时间:2013-01-02 16:44:49

标签: php json

我对PHP有所了解,但我还在学习Json。首先,我想清楚我在寻找什么。我在mysql数据库中有两个表,table1(用户)和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从第二个表“business”获取像ABC Business,XYZ Business,123 Business等的business_name行。简而言之,我想要business_name输出而不是第二个表的uid输出。 请帮我。非常感谢你。

2 个答案:

答案 0 :(得分:0)

您有一个关联数组,其中包含查询结果。这听起来像你想要的商业名称,但你不是在询问它们。

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

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

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

答案 1 :(得分:0)

非常感谢Chris和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”,无论我在寻找什么,我都得到了结果。

非常感谢你们所有人。