在PHP中一次更新多行

在PHP中一次更新多行,php,mysql,mysqli,sql-update,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 " <ta

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

我有它的工作,但只有一个价值更新与所有的

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

表格编号:

$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
$query2=“选择*工作时间,其中formid=$formid”;
$result=$mysqli->query($query2);
$num\u results=$result->num\u行;
如果($num_results>0){
回声“
超时故障
日期
小时
";
而($row=$result->fetch_assoc()){
摘录(行);
回声“
";
}
回声“
“;//结束表
提交代码:

$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();
?>
$id=$\u POST['id'];
$formid=$_POST['formid'];
$hours=$_POST['hours'];
包括“connectdb.php”;
$stmt=$mysqli->prepare(“更新工时设置工时=?其中formid=?”;
$stmt->bind_参数('si',
$\u邮政['hours'],
$_POST['formid'];
$stmt->execute();
如果($stmt){
echo“

谢谢,此请求已被批准。
您将在5秒钟内被重定向”

; }否则{ echo“错误,您的状态无法更新。
请联系您的系统管理员。”; } $stmt->close(); ?>
谁能给我指出一个正确的方向,让我在提交时更新所有的值,因为我没有运气

此外,我确实理解防止SQL注入的必要性,而且我正在工作,因此无需提醒我


提前感谢!

看起来您需要使用案例陈述,如下所述:


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

如果要更新formid等于某个值的小时数,那么它将更新formid等于某个值的所有行。formid是唯一的值吗ue?实际上,id是唯一的值-我将查询更新为$stmt=$mysqli->prepare(“更新工作时间设置小时数=?其中id=$id”);$stmt->bind_参数('I',$POST['hours'));但它只更新最后一个字段什么是formid?您需要根据行的共享值更新表…如果行有共享值,也就是说。否则,您必须使用循环或批更新进行更新。formid对于每个表单提交都是唯一的,这样我就可以查询出与该表单相关的所有值(在这种情况下,它将是所有要求的休息日)-这里是一个png的形式看起来像什么,我猜我将需要做它使用一个循环,但我是如何使用。我想这将是有帮助的,如果你张贴了你的数据库的相关部分的问题。很难说更多没有看到这一点。