在PHP中一次更新多行

时间:2014-03-03 22:19:49

标签: php mysql mysqli sql-update

我正在尝试在提交表单时更新多行(特别是这一行是“小时”字段。

我有它工作但只有一个值更新与所有这些。

每次更新都有可能有不同的值。

表单代码:

$query2 = "select * FROM work_hours WHERE formid = $formid ";
$result = $mysqli->query( $query2 );

$num_results = $result->num_rows;
if( $num_results > 0){ 

echo " <table border='0' align='center'>
<tr>
<td colspan='2' align='center'>
<strong> Time Away Break Down</strong>
 </td>
 </tr>
<tr>
<td align='center'>Date</td>
<td align='left'>Hours</td>
</tr>";

while( $row = $result->fetch_assoc() ){

extract($row);

 echo " <tr>
 <td class='hidden_sm' align='center'>
  <input type='text' name='id' size='10' value='$id' class='dept' readonly   style='width:30px;'>
<input type='text' name='date' size='40' value='$date' class='dept'   readonly>              <input type='text' name='end_date' size='40' value='$end_date' class='dept'    readonly> 
</td>
 <td class='hidden_sm' align='left' >
  <input type='text' name='hours' size='10' style='width:30px;' value='$hours'     class='dept' >        
</td>
</tr>

";
}

echo "<tr>
<td colspan='2' align='center'>
<input type='submit' name='Submit' value='Submit Request'>
</td>
</tr>
</form>
</table>";//end table

提交代码:

$id = $_POST['id'];
$formid = $_POST['formid'];
$hours = $_POST['hours'];
include 'connect-db.php'; 
$stmt = $mysqli->prepare("UPDATE work_hours SET hours = ? WHERE formid = ?");
$stmt->bind_param('si',
  $_POST['hours'],
  $_POST['formid']);
$stmt->execute(); 
 if ( $stmt ) {
echo "<p align='center'>Thank you, this request has been approved.<BR>You will be     redirected in 5 seconds</p>";
} else {
echo "Error, you status cannot be updated. <BR> Please contact your system     administrator.";
 }
$stmt->close();
?>

任何人都可以指出我正确的方向让所有值都在提交时更新,因为我没有运气。

我也明白需要防止SQL注入,而且我正在工作,所以不需要提醒我。

提前致谢!

1 个答案:

答案 0 :(得分:0)

您似乎想要使用CASE语句,如下所述: How does MySQL CASE work?

使用循环来构建语句,你最好使用id作为标识符而不是formid,因为id是唯一值,你可以在表单中得到不同的结果。