【发布时间】:2014-04-05 04:58:30
【问题描述】:
我正在尝试在提交表单时更新多行(尤其是“小时”字段。
我有它的工作,但只有一个值更新而不是全部。
每次更新都可能有不同的值。
表格代码:
$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 注入的必要性,而且我正在工作,所以不需要提醒我。
提前致谢!
【问题讨论】:
-
如果您要更新小时 WHERE formid 等于某个值,那么它将更新所有 formid 等于某个值的行。 formid 是唯一值吗?
-
实际上,id 是唯一值 - 我将查询更新为 $stmt = $mysqli->prepare("UPDATE work_hours SET hours = ? WHERE id = $id"); $stmt->bind_param('i', $_POST['hours']);但它只更新最后一个字段
-
什么是强大的?您将希望根据行的共享值更新表......如果他们有一个,那就是。否则,您将不得不使用循环或批量更新来更新。
-
formid 对于每个表单提交都是唯一的,这样我可以查询与该表单相关的所有值(在这种情况下,它将是所有请求的休息日) - 这里是表单看起来像link 我猜我需要使用循环来完成它,但我正在使用如何。
-
我想如果您将数据库的相关部分发布到问题中会有所帮助。没有看到就很难说更多。
标签: php mysql mysqli sql-update