我要保持简洁。我正在用php编写一个非常基本的代码,它将内容添加到mysql数据库中,我遇到了一个编辑问题。这是我的表格:

if($idExists)
{
   Print '
      <form action="editIt.php" method="POST">
      <div name="id"> '. $id . '</div>
      Enter new detail: <input type="text" name="details"/><br/>
      public post? <input type="checkbox" name="public[]" value="yes"/><br/>
      <input type="submit" value="Update List"/>
      </form>
   ';
}

这是我的edidit.php
//session start and stuff
if(filter_input(INPUT_SERVER, 'REQUEST_METHOD', FILTER_SANITIZE_STRING) == "POST")
{
    echo "<script type='text/javascript'>alert('EDITIT!');</script>";
    mysql_connect("localhost", "root", "") or die(mysql_error());
    mysql_select_db("WebSiteDB") or die ("Cannot connect to database");
    $id = $_POST['id'];
    $details = mysql_real_escape_string($_POST['details']);
    $time = strftime("%X");
    $date = strftime("%B %d, %Y");
    $isPublic = 'no';

    foreach($_POST['public'] as $eachCheck)
    {
        if($eachCheck != NULL)
            $isPublic = "yes";
    }

    mysql_query("UPDATE list SET details='$details', dateEdited='$date', timeEdited= '$time', public='$isPublic' WHERE id='$id'");
    header("location: home.php");
}

我真的找不到这段代码的问题(这并不奇怪,我是一个网络新手),但它只是去home.php,不改变数据库中的数据。求你了,帮我跳过这个窗台,这样我就可以继续我的生活了。

最佳答案

我想,问题出在这一行。在表单提交时,只提交输入字段值,而不提交$id = $_POST['id'];值。
所以,请换成:

if($idExists)
{
   Print '
      <form action="editIt.php" method="POST">
      <div name="id"> '. $id . '</div>
      Enter new detail: <input type="text" name="details"/><br/>
      public post? <input type="checkbox" name="public[]" value="yes"/><br/>
      <input type="submit" value="Update List"/>
      </form>
   ';
}

致:
if($idExists)
{
   Print '
      <form action="editIt.php" method="POST">
      <input type="hidden" name="id" value="' . $id . '">
      Enter new detail: <input type="text" name="details"/><br/>
      public post? <input type="checkbox" name="public[]" value="yes"/><br/>
      <input type="submit" value="Update List"/>
      </form>
   ';
}

10-06 15:36
查看更多