2014-12-03 3 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 <<<<<< ??? 

질문 : 그 값에서 온 할 ? 나는 어떻게 그들을 제거 할 수 있습니까 ?? 당신이 당신의 결과에 숫자 키를 얻을 것이다,

mysqli_fetch_all($mysqli_result, MYSQLI_ASSOC); 

이 방법을 :

+2

**'*'를 사용하는 대신 SELECT에 열 이름을 지정하십시오. ** – Sebas

+0

@Sebas에 동의하지만 그 값의 출처를 알려면 스키마에 대해 더 많이 알아야합니다. 당신은'SELECT *'를 사용하는 대신 리턴하고자하는 컬럼을 지정해야만한다. –

+0

물론 컬럼을 지정하여 출력을 제한 할 수는 있지만 처음부터 문제가 해결되지는 않는다. 나는 그 값이 내가 만든 한 가지 끔찍한 sql 실수로 인한 것이라고 생각했습니다. @brian : 실제 프로젝트의 일부이기 때문에 더 많은 데이터베이스 구조를 온라인화할 수 없습니다. ( – Orliburli

답변