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

标签 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_idb,a_id这是 NULL

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

php 和 mysqli 函数有什么方法可以阻止它吗?

最佳答案

选择具有唯一别名的列

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)

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

关于php - 如何防止 mysqli_fetch_object 覆盖左连接中的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22320961/

相关文章:

mysql - PHP/MySQL - 转义字符串的最佳使用和实践

连接 CTE 时 SQL Server 语法错误

与大表进行简单连接时的 MySQL 性能问题

php - PayPal 引用交易 - 响应状态代码 400

php - 如何使用javascript获取浏览器存储的cookie

mysql - BoneCP批量插入MySQL时抛出 "SQLException: Connection is closed!"

java - hibernate 映射: HQL many-to-one Query - how to retrieve attributes of crossed pojo objects

PHP:使用 ID 检查文本

php - 使用 index.php 解析错误 : syntax error, 意外的 T_STRING?

php - 使用 php 数组创建 mysql 查询