使用表单更新Mysql中的表

时间:2013-08-09 06:54:50

标签: php mysql

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

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

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

<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。

谢谢!

3 个答案:

答案 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();

它适用于你。