我有两张这样的表:
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);
寻找方法,但我不能。
答案 0 :(得分:2)
您可以使用mysql_fetch_assoc
代替mysql_fetch_object
:
$a = mysql_fetch_assoc($result);
echo $a['a.name'];
echo $a['b.name'];
否则,使用mysql_fetch_object
,您可以执行此操作:
$obj = mysql_fetch_object($result,'foo');
echo $obj->{'a.name'};
echo $obj->{'b.name'};
答案 1 :(得分: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
答案 2 :(得分:0)
如果表中的列具有共享相同名称的列,请在SQL中使用别名。否则,您无法按名称访问属性,因为它们会被覆盖。