我正在构建一个简单的错误跟踪工具。
创建项目后,您可以选择项目状态(已打开,正在进行,已完成)。
您可以使用以下选择表单在项目页面上更改此状态:
<form action="classes/changestatus.class.php" method="post">
<label> Change Project Status </label>
<select name="status" id="status">
<option value="open">Open</option>
<option value="inprogress">In Progress</option>
<option value="finished">Finished</option>
</select>
<input class="small button" value="Change Status" type="submit">
</form>
表单将操作发布到此类:
$status = $_POST['status'];
$sql = "UPDATE INTO projects ( status ) VALUES ('$status')";
$result = mysql_query( $sql );
$result = mysql_real_escape_string( $sql );
$latestID = mysql_insert_id();
if ( $result ) {
header('Location: ../projectpage.php?id='.$latestID);
} else {
echo "There is something wrong. Try again later.";
}
mysql_close();
因此,当您提交表单时,它将运行上面的查询并返回项目页面,其中包含已更改的项目状态,但这不起作用。 我总是被重定向到错误的项目页面,并且数据不会在mysql表中更新。
问题是我无法获取ID,当我有这个链接例如'projectpage?id = 20'时,它总是将我重定向到'projectpage?id = 0'。
任何人都可以帮助我吗?我知道代码不是完全sql注入证明,我不使用mysqli,我只是喜欢在我的问题上有一个anwser。
谢谢!
答案 0 :(得分:2)
您没有保留$ id,因此未传输此数据。在您的表单上使用:
<input type='hidden' name='hdnID' value="<?php echo $id;?>">
<input class="small button" value="Change Status" type="submit">
然后在您的表单上使用:
$status = $_POST['status'];
$id = $_POST['hdnID'];
答案 1 :(得分:0)
使用
$sql="UPDATE projects SET status = '$status'";
并且mysql_insert_id
仅在执行INSERT
查询时有效。您需要id
来更新它或者重定向它...如果您要提供id
那么你可以这样做
$sql="UPDATE projects SET status = '$status' WHERE id = $id";
重定向就像
header('Location: ../projectpage.php?id='.$id);
答案 2 :(得分:0)
试试这个,
$sql="UPDATE projects SET status = '$status', id = LAST_INSERT_ID(id)";
$latestID = mysql_insert_id();
它适用于你。