2012-01-12 3 views
2

필자는이 PHP 스크립트 섹션을 통해 레코드 세트를 반복하고 변수에 데이터를 저장합니다.SQL 쿼리의 PHP 대량 변수

$sql_result5 = mysql_query("SELECT * FROM turfs WHERE city = '$city'", $db); $query++; 
while ($rs5 = mysql_fetch_array($sql_result5)) { 
    if ($rs5[plot] != "") { 
     ${$rs5[plot].'_exist'} = 1; 
     ${'$p_color_'.$rs5[plot]} = $rs5[color]; 
     ${$rs5[plot].'_1'} = $rs5[color1]; 
     } 
    } 

나는 그 루프는 각각의 데이터를 저장 (400 개) 기록을 갈 것이다 있도록하는 20 × 20 그리드를 채우기 위해이 데이터를 사용하고, 각 레코드 (그리드의 상자)에 대한이있을 필요가 약 5 정도 변수.

이렇게 많은 변수를 만드는 것은 나쁜 생각입니까? 이 작업을 수행하는 더 좋은 방법이 있습니까? 아마 배열일까요?

+2

각각을위한 개별 변수를 만들지 말고, 배열을 만드십시오. 20x20 격자를 원한다면 2-d 배열을 만드십시오 –

+0

배열에 너무 익숙하지 않습니다. 그러나 5가 있다면 괜찮습니다. 또는 20x20 격자의 각 사각형마다 다른 변수가 있습니까? – user1022585

+0

@ user1022585 변수를 명명하는 것만으로도 (당신이하는 것처럼) 결코 좋은 생각은 아닙니다. 문제를 일으킬 수 밖에 없습니다. 배열 작동 방식을 읽어야합니다. – kba

답변

3

변수를 생성하는 것은 지금까지했던 것처럼 최선의 방법은 아닙니다. 대신 array을 사용하거나 while 루프 내에 눈금을 만듭니다.

배열 그리고

$sql_result5 = mysql_query("SELECT * FROM turfs WHERE city = '$city'", $db); 
$query++; 
while($rs5 = mysql_fetch_array($sql_result5)){ 
if($rs5[plot]){ 
    $plot[$rs5[plot]] = array(
    'color' => $rs5[color], 
    'color1' => $rs5[color1], 
); 
} 
} 

만들기 ...

foreach($plot as $this_plot){ 
$color = $this_plot['color']; 
$color1 = $this_plot['color1']; 
// Do something here 
} 

또는 while

$sql_result5 = mysql_query("SELECT * FROM turfs WHERE city = '$city'", $db); 
$query++; 
while($rs5 = mysql_fetch_array($sql_result5)){ 
if($rs5[plot]){ 
    $color = $rs5['color']; 
    $color1 = $rs5['color1']; 
    // Do something here 
} 
} 
0
$sql_result5 = mysql_query("SELECT * FROM turfs WHERE city = '$city'", $db); $query++; 
$plots = array(); 
$i = 0; 
while ($rs5 = mysql_fetch_array($sql_result5)) { 
    $plots[$i] = $rs5;  
    $i++; 
} 

//Then when you're rendering... 
$i=0; 
foreach($plots as $space) 
{ 
    $space['color']; 
} 

내에서 그리드 만들기 정보를 어떻게 게시 할 것인가에 달려 있습니다. 2D 배열을 만들 수는 있지만 필요에 따라 생각하지 않아도됩니다. 20 개의 항목마다 새로운 행을 만들어야합니다.