在一对多关系中获取字符串值而不是外部id

时间:2014-11-28 16:25:19

标签: php html mysql pdo

我有一个查询,它将显示与其他表相关的表的字段/值。使用foreach循环,我可以在html中显示那些字段/值。但是我想显示'foreign_name'而不是'foreign_id'。

<?php foreach ($table_related as $table): ?>
<?php echo $table['id']; ?>
<?php echo $table['foreign_id']; ?>//the foreign key, it should be foreign_name
<?php echo $table['name'];?>
<?php endforeach; ?>

// classeManageService.php

function showAllServices()
{

    $query = $this->link->query("SELECT * FROM services ORDER BY id DESC");

    $rowcount = $query->rowCount();

    if($rowcount > 0)
    {
        $result = $query->fetchAll();
        return $result;
    }    
    else
    {
        return $rowcount;
    }
    return $result; 
 }

// show_all.php

<?php
include_once('../../classes/class.ManageServices.php');

$init = new ManageServices();
    $show_all_services = $init->showAllServices();

?>

'my_table'有列id,my_name,desc,foreign_id,'other_table'有列foreign_id,foreign_name,foreign_desc

我可以在html中显示所有这些值。但是如何显示其他字段而不是其他表中的id?我是否需要更改查询?有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您必须使用JOIN

进行查询

由于您没有提供其他表名,因此请考虑使用otherTable,将service_id视为外键。

查询示例:

$query = $this->link->query("SELECT * FROM services s, otherTable o  WHERE s.id = o.service_id ORDER BY s.id DESC");

现在在结果集中,您还将拥有otherTable的所有字段,您可以从中获取所需的名称。

答案 1 :(得分:0)

好吧我明白了,我改变了我的疑问 从

$query = $this->link->query("SELECT * FROM services ORDER BY id DESC");

$query = $this->link->query("SELECT services.*, services_type.name FROM services JOIN services_type   USING(services_id)") ;

现在它的工作,Yayy ..