我有一个看起来像这样的表:
------------------------------------------------
id | job_no | comment | status | current_status
------------------------------------------------
1 | 9201 | ... | active | active
------------------------------------------------
2 | 9201 | ... | hold | hold
------------------------------------------------
3 | 9201 | ... | cancel | cancel
------------------------------------------------
在此示例中,当我输入编号为9201的作业的注释并更改状态以取消时,例如,我需要将列状态更新为“取消”,并且将current_status更新为“取消”,但所有先前的行作业9201 current_status更新为空白(''),状态保持原样。像这样:
------------------------------------------------
id | job_no | comment | status | current_status
------------------------------------------------
1 | 9201 | ... | active |
------------------------------------------------
2 | 9201 | ... | hold |
------------------------------------------------
3 | 9201 | ... | cancel | cancel
------------------------------------------------
因此,每次更新时,该ID的状态都会更新,但是current_status仅用于更新该job_no和该job_no current_status为空的其他行的最后一个ID。
现在已经挣扎了好几天...请帮助。
所有操作均在一页上完成,最后刷新页面。有人输入评论,该评论显示在页面底部,而current_status则在页面顶部更改:
$insert = "INSERT INTO history (user,comment,job_no,status)
VALUES ('$user','$comment','$job_no','$status')";
$query = mysqli_query($connection, $insert) or die
(mysqli_error($connection));
$sel_query="Select * from history ORDER BY comment_date DESC LIMIT 1";
$result = mysqli_query($connection,$sel_query);
while($row = mysqli_fetch_assoc($result)) {
$status = $row['status'];
$job_no = $row['job_no'];
}
$update1="update history set current_status='$status' where
job_no='$job_no'";
mysqli_query($connection, $update1) or die(mysqli_error());
echo '<meta http-equiv="refresh" content="0">';
答案 0 :(得分:1)
尝试一下:
首先,使用提供的current_status = ''
的{{1}}更新所有行
job_no
,然后使用UPDATE history
SET current_status = ''
WHERE job_no = "$job_no"
更新最后一个:
current_status = 'cancel'
答案 1 :(得分:0)
我假设您可以从要更改状态的行中获取id和job_no。
因此您可以通过id来简单地更新它:
UPDATE HISTORY
SET status = 'cancel', current_status = 'cancel'
WHERE id = 3;
然后使用此ID + job_no更新所有其他人
UPDATE HISTORY
SET current_status = ''
WHERE job_no = 9201 AND id != 3;