首页 > 解决方案 > 如何分别回显 helper_tbl 状态列和 getter_tbl 状态列字段

问题描述

我希望能够指定正在回显的表列。

当我尝试仅从帮助列打印时我变得空白

$query = $db->fetch("SELECT n.*, g.* FROM helper AS n LEFT JOIN getter AS g ON n.user_id= g.user_id WHERE n.user_id='{$id}' OR g.user_id='{$id}' ");

if($query !== ''){
    foreach($query as $value){
        $output .= $value['n.status'];
    }
    print $output;
}

标签: phpmysqlsqlmysqli

解决方案


您的问题是两列都被调用status,因此当结果数组形成时,第二个status值会覆盖第一个值(因为 PHP 数组对于给定的关联键只能有一个值)。您可以使用列别名解决此问题:

$query = $db->fetch("SELECT n.*, g.*, n.status as n_status, g.status as g_status
                     FROM helper AS n 
                     LEFT JOIN getter AS g ON n.user_id= g.user_id 
                     WHERE n.user_id='{$id}' OR g.user_id='{$id}' ");
if($query !== ''){
    foreach($query as $value){
        $output .= $value['n_status'];
    }
    print $output;
}

请注意,您的user_id专栏(可能还有其他专栏)也会遇到同样的问题。通常,更好的做法是单独枚举您想要的列(而不是使用*),这样您就可以从一开始就避免这个问题。


推荐阅读