2011-03-12 56 views
0

我有两个表是这样的:复杂查询在PHP

table a: 

    [id, name, roll, address, mark] 

table b 

    [id, name, fee, reg_date] 

现在我运行一个查询是这样的:

select * from a, b where a.id = b.id; 

和我使用 'mysql_fetch_object'。 现在我怎样才能打印表a的名字和表b的名字?

我尝试这样做:

class foo { 
    public $name; 
} 

mysql_connect("localhost", "root", ""); 
mysql_select_db("dodex"); 

$result = mysql_query("select * from a, b where a.id = b.id"); 
$obj = mysql_fetch_object($result, 'foo'); 
var_dump($obj); 

找到一种方法,但我做不到。

+1

你的问题是什么,不起作用?你会得到什么错误? – 2011-03-12 11:23:26

+0

表的名字?或者表中名称列的值?对于第二个:'选择a.name,b.name从a,b其中a.id = b.id' – Galz 2011-03-12 11:30:39

+0

我想要获得a.name和b.name – 2011-03-12 11:33:42

回答

1

您可以使用mysql_fetch_assoc,而不是mysql_fetch_object:在你的SQL

$obj = mysql_fetch_assoc($result,'foo'); 
echo $obj->{'a.name'}; 
echo $obj->{'b.name'}; 
0

使用别名,如果表中有共享列:

$a = mysql_fetch_assoc($result); 
echo $a['a.name']; 
echo $a['b.name']; 

否则,mysql_fetch_object,你可以这样做一样的名字。否则,您无法通过名称访问属性,因为它们会被覆盖。

2

使用select *通常是一个坏主意(这是一个原因)。

你应该声明你要找的每个字段,然后让你别名看看是否清晰:

select a.id as id, a.name as aName, b.name as bName, roll, address, mark, fee, reg_date 
from a, b 
where a.id = b.id; 

也考虑加入明确的 - 它使事情更容易调试至少(在我的经验):

select a.id as id, a.name as aName, b.name as bName, roll, address, mark, fee, reg_date 
from a 
join b on a.id=b.id