2013-09-02 3 views
0

양식이 20 행 10 열이고 요소 ID는 _r1, _r2 등으로 구분되며 모든 값을 수동으로 내 쿼리에서 할당하지 않고 루프를 통해 바랬습니다. 그들.변수를 반복하고 값을 할당합니다.

뭔가

//Set all mileage fields to empty 
for ($i = 1; $i <= 20; $i++) { 
    $strTravelDate_r.$i = ""; 
    $strHBE_r.$i = ""; 
    $strPassenger_r.$i = ""; 
    $strCongestionCode_r.$i = ""; 
    $strTravelReason_r.$i = ""; 
    $strAddress1_r.$i = ""; 
    $strAddress2_r.$i = ""; 
    $strDistance_r.$i = ""; 
    $strRate_r.$i = ""; 
    $strLineAmount_r.$i = ""; 
} 

//Get mileage claims 
$sql_miles = 'SELECT * FROM `tblsaved_mileage` WHERE `strUsername`="'.addslashes($username).'"'; 
$rs_miles = mysql_query($sql_miles); 
$count_miles = mysql_num_rows($rs_miles); 
$i = 1; 
if ($count_miles > 0) { 
    while ($row_miles = mysql_fetch_array($rs_miles)) { 
     $strTravelDate_r.$i = $row_miles['strTravelDate']; 
     $strHBE_r.$i = $row_miles['strHBE']; 
     $strPassenger_r.$i = $row_miles['strPassenger']; 
     $strCongestionCode_r.$i = $row_miles['strCongestionCode']; 
     $strTravelReason_r.$i = $row_miles['strTravelReason']; 
     $strAddress1_r.$i = $row_miles['strAddress1']; 
     $strAddress2_r.$i = $row_miles['strAddress2']; 
     $strDistance_r.$i = $row_miles['strDistance']; 
     $strRate_r.$i = $row_miles['strRate']; 
     $strLineAmount_r.$i = $row_miles['strAmount']; 

     $i = $i + 1; 
    } 
} 

같은하지만 배열이 아닌 변수 변수를 사용

Notice: Undefined variable: strTravelDate_r in ........ 

Notice: Undefined variable: strHBE_r in ........ 

Notice: Undefined variable: strPassenger_r in ........ 
+0

배열을 사용하여 값을 보관하지 않은 이유는 무엇입니까? –

+1

PHP에는 가변 변수가 있지만 tham의 구문은 아닙니다. 올바른 구문을 보여줄 수는 있지만 대신 배열을 사용해야하므로 구문을 사용할 수는 없습니다. – Barmar

+0

당신은 단지 20 개의 변수를 할당하기 때문에 쿼리에'LIMIT 20 '을 추가하는 것이 현명 할 것입니다 ... 이 경우 변수 변수 대신 배열을 사용하는 것이 좋습니다. – NDM

답변

2

의 부하를 얻을 :

$results = array(); 
while ($row_miles = mysql_fetch_assoc($rs_miles)) { 
    $results[] = $row_miles; 
} 

이제 예를 들어, $results[$i]['strTravelDate']에 액세스 할 수 있습니다.

+0

Barmar에게 감사드립니다. 나는 그것을 줄 것이다. 내 양식에 $ results [0], $ results [1] 등을 표시합니까? – Dion

+0

아니, 내가 보여준 것처럼'$ results [0] [ 'columnName']'을 에코합니다. PHP 배열을 공부하십시오. 저는 처음에는 프로그래밍 튜터가 아닙니다. – Barmar

+0

감사합니다. 1) 질문에 대답하는 것이 당신의 선택이었습니다. 2) 당신의 제안이 사라지고 다른 곳에서 답을 얻는다면이 포럼은 쓸모가 없습니다. 그럼에도 불구하고, 나는 당신의 도움에 감사드립니다. – Dion

0

MySQL 라이브러리 (현재 사용되지 않는 확장 기능)에서부터 변수를 지정하는 방법에 이르기까지 당신의 접근 방식은 완전히 잘못되었습니다. 그런 목적으로 배열을 사용합니다. 당신이 PDO를 사용하는 경우 또한, - 거기 당신이 만든 모든 것을 엉망이된다 (당신이 PHP의 PDO 클래스를 사용하여 $의 PDO 개체를 만든 가정) :

$stmt = $pdo->prepare("SELECT * FROM `tblsaved_mileage` WHERE `strUsername` = ?"); 

$stmt->execute(array($username)); 

$results = $stmt->fetchAll(PDO::FETCH_ASSOC); // And now you have all of your data in $results array 

가 N 변수를 초기화하는 필요, 필요 쓸모 사용하지하기를 mysql_ * 확장 기능을 사용하면 루프백 할 필요가 없으며 addslashes 등을 사용할 필요가 없으며 코드가 적어집니다.

+0

고마워요. 그들은 직장에서 PDO를 설치하지 않으며 IT 부서에 아무것도하지 못하게하는 것은 돌에서 피를 흘리는 것과 같습니다. mysqli를 사용할 수는 있지만 엄청난 양의 작업 기록이 필요하다. 배열을 사용하여 요점을 알려 드리겠습니다 - 그 이유는 여기에서 질문하는 것입니다. – Dion

+0

IT 주제에 대해 느끼기는하지만 여전히 원칙이 적용됩니다. Barmar가 대답 할 때, 여기 배열은 문제를 해결합니다. 당신이 그들을 사용하는 방법을 익숙하지 않다면, 그것은 또 다른 주제입니다 :) –

관련 문제