Php MySql内部连接导致“怪异”数组

Php MySql内部连接导致“怪异”数组,php,mysql,join,Php,Mysql,Join,我不太擅长高级MySql,尝试连接多个表并将结果放入单个PHP数组 SELECT * FROM AAA INNER JOIN BBB ON AAA.Aufg_id = BBB.Aufg_id INNER JOIN CCC ON AAA.SchuelerNr = CCC.schuelernr AND AAA.Schulnummer = CCC.schulnummer AND AAA.Klasse = CCC.klasse WHERE AAA.Schu

我不太擅长高级MySql,尝试连接多个表并将结果放入单个PHP数组

SELECT * FROM AAA
        INNER JOIN BBB ON AAA.Aufg_id = BBB.Aufg_id
        INNER JOIN CCC ON AAA.SchuelerNr = CCC.schuelernr AND AAA.Schulnummer = CCC.schulnummer AND AAA.Klasse = CCC.klasse
        WHERE AAA.Schulnummer='$x' AND AAA.Klasse='$y' AND AAA.SchuelerNr='$z'
结果被放入一个列表中

mysqli_fetch_all($mysqli_result, MYSQLI_BOTH);
因此,我能够通过循环迭代获得关联值或数字值。 除了两个本不应该存在的价值观外,几乎所有东西都运转良好:

[0] => DEMO11
        [sn] => DEMO11
        [1] => 2014-03-31 10:05:14
        [zt] => 2014-03-31 11:47:45
        [2] => 8a_D1
        [kl] => 8a_D1
        [3] => 4
        [snr] => 4
        [4] => 1
        [Aufg_id] => 1
        [5] => f
        [erg] => f
        [6] => 1   <<<< WHERE DOES THIS COME FROM?
        [7] => 1
        [th] => 1
        [8] => Deu
        [fac] => Deu
该值每行增加一个。它就在AAA和BBB表之间,没有任何关联键

在每一行的末尾,还有一个更令人恼火的值,表示来自其他列之一的datetime:

[43] => 8
[NA_Eng] => 8
[44] => 4
[NA_Fra] => 4
[45] => 2014-03-31 11:47:45 <<<<<< ???
问题: 这些价值观从何而来?如何摆脱它们???

将您的代码更改为:

mysqli_fetch_all($mysqli_result, MYSQLI_ASSOC);
这样,您就不会在结果中获得数字键


请参阅。

在SELECT中命名列,而不是使用*。我们必须了解更多有关架构的信息,才能告诉您该值的来源,尽管我同意@Sebas的观点,即您应该指定要返回的列,而不是使用SELECT*当然,我可以通过指定列来限制输出,但这并不能从一开始就解决问题。我认为这些值源自我犯的一个可怕的sql错误@布莱恩:恐怕我不能把更多的数据库结构放在网上,因为它是一个真实项目的一部分:看起来OP想要字符串和数字键。