2011-03-12 54 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