PHP中的复杂查询

时间:2011-03-12 11:22:07

标签: php mysql

我有两张这样的表:

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);

寻找方法,但我不能。

3 个答案:

答案 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中使用别名。否则,您无法按名称访问属性,因为它们会被覆盖。