2014-12-03 52 views
0

我在先進的MySql中並不擅長,並嘗試連接多個表並將結果放入單個PHP數組中。MySql INNER JOIN導致「奇怪」數組

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表之間,沒有任何關聯密鑰。

在每一行的結尾處,有代表從其他一列的日期時間一個更加刺激值:

[43] => 8 
[NA_Eng] => 8 
[44] => 4 
[NA_Fra] => 4 
[45] => 2014-03-31 11:47:45 <<<<<< ??? 

問題: 哪裏這些值從何而來?我怎樣才能擺脫他們?

+2

**在SELECT中命名您的列,而不是使用'*'。** – Sebas 2014-12-03 17:04:48

+0

我們必須知道更多關於您的模式以便能夠告訴您該值來自何處,儘管我同意@Sebas你應該指定要返回的列而不是使用'SELECT *' – 2014-12-03 17:06:38

+0

當然,我可以通過指定列來限制輸出,但這並不能解決問題。我認爲這些值是源自我犯的一個可怕的sql錯誤。 @brian:恐怕我不能把更多的在線數據庫結構,因爲它是一個真正的項目的一部分:( – Orliburli 2014-12-03 17:21:02

回答

0

你的代碼更改爲:

mysqli_fetch_all($mysqli_result, MYSQLI_ASSOC); 

這樣一來,你就不會得到數字鍵在搜索結果中。

請參閱MySQLi predefined constants

+0

看來OP想要有字符串和數字鍵。 – 2014-12-03 17:07:01