0

我正在构建一个简单的错误跟踪工具。

创建项目后,您可以选择项目状态(打开、进行中、已完成)。

您可以使用此选择表单在项目页面上更改此状态,:

<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,我只是想对我的问题有一个回答。

谢谢!

4

3 回答 3

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'];
于 2013-08-09T07:00:23.197 回答
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); 
于 2013-08-09T06:56:04.330 回答
0

尝试这个,

$sql="UPDATE projects SET status = '$status', id = LAST_INSERT_ID(id)"; 
$latestID = mysql_insert_id();

它会为你工作。

于 2013-08-09T07:11:13.593 回答