2012-07-21 2 views
0

DB의 열 (필드) 수를 계산합니다. 이제 각 열에 대한 배열을 만들고 싶습니다. 어떻게 든 가능합니까? 예를 들어 : 정수 값에서 배열을 동적으로 만듭니다. PHP

$num = mysql_num_fields($query); 
for($i=0; $i<$num; $i++){  // loop 1 
    $field_names[] = mysql_field_name($query,$i); 
} 
for($i=0; $i<$num; $i++){ // loop 2 
    while($row = mysql_fetch_array($query)){ // loop 3 
     $array[] = $row[$field_names[$i]] 
    } 
} 

지금 나는 기본적으로 내가 3 개 가지 배열이있을 것이다 3 개 루프 말의 끝에 있도록 $ 배열 [] 변수마다 루프 2 개 끝을 변경하고 싶습니다. 그게 가능하니? 그렇다면 설명해주십시오.

+0

예기치 않은 결과가 있습니까? –

+0

mysql_fetch_array를하는 대신 mysql_fetch_assoc을 살펴보십시오. 더 많은 것을 도와 줄 수 있습니다 – Kris

+0

mysqli가 더 잘 작동하기 때문에 새로운 코드 인 경우 mysqli를 사용해보십시오. http://stackoverflow.com/questions/171400/which-is-fastest-in-php-mysql-or-mysqli –

답변

1

각 열에 대한 배열 대신 필드 이름을 키로 사용하여 배열을 만들 수 있습니다.

$num = mysql_num_fields($query); 
for($i=0; $i<$num; $i++){  // loop 1 

    $field_names = mysql_field_name($query,$i); 
    $field_array[$field_names] = array(); 
} 

이 후 다음과 같은 배열

print_r($field_array); 

을 얻을 것이다 // 밖으로

Array(
[fieldname1] => Array() 
[fieldname2] => Array() 
[fieldname3] => Array() 
[fieldname4] => Array() 
) 
+0

그것은 일하고 있습니까? –

0

임 당신이 그렇게 할 이유 확실하지를 넣어 ..하지만이 가능합니다. .

for($i=0; $i<$num; $i++){ // loop 2 
    while($row = mysql_fetch_array($query)){ // loop 3 
     $arrayName = "array$i"; 
     ${$arrayName}[] = $row[$field_names[$i]] 
    } 
} 

그래서 당신은 3 개의 루프를 가지고 $ array1, $ array2, $ array3 변수를 가질 것입니다.

그러나 이것에 대해서 정말로 조언하고 당신의 디자인을 다시 생각해보십시오. 훨씬 더 좋은 방법이 있어야합니다.

관련 문제