2014-07-14 4 views
1

많은 루프가있을 수 있도록 while 루프에있는 양식이 있습니다. 이름이 각 행 입력에 대해 동일하면 업데이트하지 않는다는 것을 알고 있으므로 이름에 []를 추가했습니다. 입력의 행의이 짧은 조각은 내가 가진 :POST 다중 행이 업데이트되지 않음에서 업데이트 문

<td><input type='hidden' name='rowID[]' value='$rowID'>$date</td> 
<td width='70'>$billable</td><td width='100'><input value='$details[]' type='text' name='details[]' style='padding:2px;' size='15'></td> 
<td width='50'><input value='$parking' type='text' name='parking[]' value='0.00' style='padding:2px;' size='7'></td> 
<td width='75'><input value='$mileage' type='text' value='0.00' name='mileage[]' style='padding:2px;' size='10'></td> 
<td width='75'><input value='$taxis' type='text' value='0.00' name='taxi[]' style='padding:2px;' size='10'></td><td width='50'> 

후 사용하여 다른 페이지에서 처리됩니다이 양식 : 나는 [] 다음 바로 업데이트하지 않고 작업을 수행하는 경우

foreach ($_POST['rowID'] as $index => $id) { 
    $sql = "UPDATE b_expense_report SET DETAILS = '".$_POST['details'][$index]."', 
    PARKING = '".$_POST['parking'][$index]."', 
    MILEAGE = '".$_POST['mileage'][$index]."', 
    TAXIS = '".$_POST['taxi'][$index]."' 
    WHERE ID = '".$_POST['rowID']."'"; 

    if (!mysqli_query($con,$sql)) 
    { 
     die('Error: ' . mysqli_error($con)); 
    } 
} 
header('Location: mywebsite.com'); 

하나의 행. 변경된 모든 행을 업데이트하려고합니다. 현재 내가 [아무것도] 업데이트하지 않는 것을 추가 한 이래로.

내가 어디로 잘못 가고 있는지 알려주세요.

+1

, 당신은 테이블의 모든 레코드를 업데이트하는'b_expense_report', 당신이 없기 때문에 'WHERE' clausue ... – Legionar

+0

은 무엇 SQL을 생성합니까? 너 죽을거야? –

+0

죄송합니다. 코드 조각을 가져 와서 문제를 해결하고 where 절을 놓치 셨습니다. 그것은 스크립트를 통해 실행하고 끝으로 리디렉션하지만 아무 것도 업데이트되지 않습니다. – andy

답변

0

동일한 쿼리를 반복해서 반복하는 경우 준비된 문을 사용하십시오. 또한 SQL 인젝션에 대한 입력을 위생적으로 처리합니다. 내 머리의 코드 맨 위에 떨어져 완전히 검증되지 않은 : 처음에

$sql = "UPDATE b_expense_report SET DETAILS=?, PARKING=?, MILEAGE=?, TAXIS=? WHERE ID=?"; 
$stmt = mysqli_prepare($con, $sql); 
mysqli_stmt_bind_param($stmt, "sssss", $details, $parking, $mileage, $taxi, $id); 

foreach ($_POST['rowID'] as $index => $id) { 
    $details = $_POST['details'][$index]; 
    $parking = $_POST['parking'][$index]; 
    $mileage = $_POST['mileage'][$index]; 
    $taxi = $_POST['taxi'][$index]; 
    if (!mysqli_stmt_execute($stmt)) { 
     die('Error: ' . mysqli_error($con)); 
    } 
} 
관련 문제