如何防止mysqli_fetch_object覆盖左连接中的空值

时间:2014-03-11 09:06:39

标签: php mysql join mysqli

我在mysql中有两个表,其中一个表是另一个表的父表。

CREATE TABLE `a` (
    `a_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `name` varchar(32) DEFAULT NULL,
    PRIMARY KEY (`a_id`)
);
CREATE TABLE `b` (
    `b_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `a_id` int(10) unsigned NOT NULL,
    `stuffs` varchar(32) DEFAULT NULL,
    PRIMARY KEY (`b_id`)
);

很明显,两个表之间的关系是1-N,表'b'可能记录表'a'中的任何记录,但可能没有。

如果表'b'没有表'a'中某些记录的记录,我使用此查询连接这些表:

SELECT * FROM TABLE a LEFT JOIN TABLE b ON (a.a_id = b.a_id)

然后使用mysqli_fetch_object获取记录的对象,它将a.a_id替换为b,a_id NULL

除了在查询中使用SELECT外,我该怎样阻止它?

有没有办法在php和mysqli函数中阻止它?

1 个答案:

答案 0 :(得分:1)

选择具有唯一别名的列

SELECT 
a.a_id,
b.a_id as b_a_id
,a.name
,b.b_id
,b.stuffs
 FROM 
TABLE a 
LEFT JOIN TABLE b ON (a.a_id = b.a_id)

查询具有相同名称的列,将选择最后一列,因此如果您想要访问表{1},则需要为表b的a_id列使用不同的别名