2012-02-28 4 views
1

나는 MySQL의 테이블에서 일부 데이터를 얻기 위해 PHP를 사용하고 있습니다. 테이블에 많은 열이 있기 때문에 테이블을 올바른 결과를 반환하지만, 내가 이것에 대한 루프를 만들 수 있고 val1, val2 등으로 내 모든 값을 저장할 수 있다고 생각. 나는 몇 가지 행이있을 수 있으므로 처음 루프를 사용하고 있습니다.size_of 잘못된 대답을 반환

while($row1 = mysql_fetch_array($sql2)){ 
    for($i = 1; $i < sizeof($row1); $i++) { 
     $val.$i = $row1[$i]; 
    } 

그러나 sizeof ($ row1)은 40을 반환하지만 그 테이블에는 18 개의 열만 있습니다.

제가 $val.$i = $row1[$i]; 변수를 선언하는 올바른 방법이 아닌 것 같아요?

나는 어리석은 실수를 저 지르지 만 나는 알아낼 수 없다는 것을 알고있다. : S

+0

레코드가 40 개입니까? – ChristopheD

+0

데이터베이스에 번호가 매겨진 열이 18 개인 경우 데이터베이스 구조를 검토해야합니다. –

+0

@ChtistopeD : 아니요, 저는 그 순간에 하나씩 가지고 있습니다! – Namit

답변

6

당신은 결과의 유형을 지정 할 수 있습니다 : 당신이 모두 연관 배열을 얻을 것이다 MYSQL_BOTH (디폴트)를 사용하여

다음 manual에서

mysql_fetch_array($sql2, MYSQL_NUM); 

을 번호 색인.

+0

이것은 내 일을했지만, 문제는'$ val. $ i = $ row1 [$ i];와 관련이 있다는 것을 깨달았습니다. 단서가 있습니까? – Namit

+0

@Namit 왜 카운트가 1에서 시작합니까? 대신 0이 아니어야합니까? –

+0

첫 번째 열이 키이므로 두 번째 열에서 데이터를 가져오고 싶습니다. – Namit

0

$ sql2에서 중복 값이있을 수도 있습니다. 선택에 DISTINCT 키워드를 사용하십시오. 해당 문서를 sizeof 페이지에서 COM MSN [dawt] [에] umopdn 의견을 훔치는

+1

은 단일 행의 결과 수에 영향을 미치지 않습니다. – wallyk

0

:

가) 항상 ... 다양한 유형의 객체를 반복하는 대신 해석하는 PHP의 내부 루틴을 사용하여 코드는 을 통해 반복하기 때문에 훨씬 빠른 자체 루틴을 사용합니다.

...

C) 내가 sizeof 연산자에 PixEye의 발언()에 동의 은 (foreach는() 수동 interation보다 빠르게 실행됩니다 이유입니다). PHP에서는 실제 함수 count()에 대한 별칭은 입니다. 논리적으로는 객체의 요소 수가 아닌 다른 언어로 이라는 다른 의미가 있습니다. 다른 언어의 PHP로 전환하는 개발자를 혼동시킬 수 있으므로 피해야합니다.

sizeof()를 사용하려면 count()를 사용해야하지만 for() 대신 foreach()를 사용할 수 있고 사용해야한다는 사실에 의해 무효화되어야합니다.

관련 문제