用旧变量填充表单值


Form values populated with old variable

我正在尝试创建一个用户可以编辑信息的页面。

我可以用数组中的值填充表单并更新它们,但是,当它被保存并使用不同的数组信息再次访问时,它显示以前的表单数据。我看过在提交页面后清除缓存并将数组设置为NULL,但这两种方法都不起作用!

我有:

$id = ($_GET['id']);
function get_edit_event_details() {
global $connection;
    $query = 'SELECT * 
        FROM events
        WHERE id = "$id"';
$event_details = mysql_query($query, $connection);
confirm_query($event_details);
return $event_details;
echo $query;
}   
$event_details = get_event_details();
$details = mysql_fetch_array($event_details);

和填充表单值(我也尝试过autocomplete="off",也没有工作)

<input type="text" name="event_date" id="event_date" size="27" value="<?php echo $details["date"];?>" autocomplete="off" />

我对PHP比较陌生,除了这个问题,我已经能够解决我遇到的每一个问题!

我知道这可能不是一个真正的答案,但我想指出一些事情:

  1. 你的ID应该被强制转换为INT,因为现在你很容易被注入。
    所以应该是$id = intval($_GET['id']);
  2. 你的ID是如何传递给函数的?它在外部,没有作为参数传递,也没有全局化。我相信这可能是问题所在,因为您的查询将始终没有和ID用作条件。试一试:

    get_edit_event_details ($ id) {}

  3. 个人品味也许,但是使用2个函数和外部调用返回值,只是为了获取结果,这有点臭。我将把整个重写为:

    function get_edit_event_details($_GET['id']) 
    {
      global $connection;
      $id = intval($_GET['id']);
      $query = "SELECT * FROM events WHERE id = '$id'";
      $result = mysql_query($query, $connection) or trigger_error('Query error: '.mysql_error());
      if(mysql_num_rows($result) > 0)
      {
       return mysql_fetch_array($result);
      }
      else
      {
        return FALSE;
      }
    }
    if($details = get_edit_event_details($_GET['id']) :?>
    <input type="text" name="event_date" id="event_date" size="27" value="<?php echo $details["date"];?>" autocomplete="off" /> 
    <?php endif;?>
    

请记住,这仍然不是完美的代码,我知道,有点像我的了:)。您可能需要检查$_GET['id']是否也设置了,在函数内部或外部。