Php MySQL不使用内部联接在单独的表中显示重复的列名

Php MySQL不使用内部联接在单独的表中显示重复的列名,php,mysql,sql,join,inner-join,Php,Mysql,Sql,Join,Inner Join,我有一个包含22个表的数据库,大多数表都有几个同名的列字段。当我对具有重复列名的表使用内部联接时,它将在最后一个表中忽略它们。现在我只加入3个表格 SELECT * FROM company C INNER JOIN typeofdealer PI ON C.CompanyID = PI.CompanyID INNER JOIN typeofservices TS ON PI.CompanyID = TS.CompanyID 因此,在本例中,typeofdealer和typeofservi

我有一个包含22个表的数据库,大多数表都有几个同名的列字段。当我对具有重复列名的表使用内部联接时,它将在最后一个表中忽略它们。现在我只加入3个表格

SELECT * FROM company C 
INNER JOIN typeofdealer PI ON C.CompanyID = PI.CompanyID 
INNER JOIN typeofservices TS ON PI.CompanyID = TS.CompanyID
因此,在本例中,
typeofdealer
typeofservices
都包含列名
Other
OtherText
当我返回此查询时,我只看到一个
Other
和一个
OtherText

当我写这篇文章的时候,我发现如果我在“phpmyadmin”中进行查询,我会完全按照预期得到它。我使用php中准备好的语句执行此查询,并使用以下命令输出结果:

echo "<PRE>";
print_r($results);
echo "</PRE>";
echo”“;
打印(结果);
回声“;

我认为问题在于php数组不能包含重复的字段,所以有没有办法避免我遇到的问题?

正如您正确地建议的,问题在于php不允许使用相同的键名向数组中输入多个条目

解决此问题的最简单方法是在查询的列选择部分中别名字段,如下所示:

SELECT *, typeofservices.Other as ServicesOther, typeofservices.OtherText as ServicesOtherText FROM company C 
INNER JOIN typeofdealer PI ON C.CompanyID = PI.CompanyID 
INNER JOIN typeofservices TS ON PI.CompanyID = TS.CompanyID

这并不漂亮,但很简单。

解决方法是使用别名
AS
来区分同名列。比如:

SELECT PI.Other AS Other1, PI.OtherText AS OtherText2, TS.Other AS Other2, TS.OtherText AS OtherText2 FROM company C 
INNER JOIN typeofdealer PI ON C.CompanyID = PI.CompanyID 
INNER JOIN typeofservices TS ON PI.CompanyID = TS.CompanyID

实际上,如果省略AS关键字say
SELECT PI,它也会以同样的方式工作。Other Other1,PI.OtherText OtherText2

是否检查结果是否没有像Other\u 1那样的附加列,通常情况下,如果结果具有相同的列名,它会尝试使用别名Using
var\u dump
不会列出任何别名它基本上会删除匹配的字段名称您知道有SQL查询来查找重复的列名吗?