$_GET[] returns php 编辑页面中的零

$_GET[] returns zero in editing page in php

我正在编辑数据库记录,方法是在 auditplan.php 页面中按“编辑”按钮,然后通过发送选定的记录 ID 重定向到编辑页面 (auditplanedit.php),如下所示:

<td> 
    <a href="auditplanedit.php?cid=<?php echo $row["id"]; ?>"><i class="ion ion-edit"></i></a>
    <a href="deleteauditplan.php?cid=<?php echo $row["id"]; ?>" onclick="return confirm('Are you sure?')"><i class="ion ion-close"></i></a>                
</td>

首先,我使用 SELECT 语句将所有数据放入控件中,编辑后,为了更新,我使用 [=22= 将编辑后的数据保存到数据库中]UPDATE 声明,这里我使用 'id' ,我使用 $_GET['id']auditplan.php 获得。 对于 SELECT 语句,这些 id returns 正确选择了值,但在更新期间它显示为零。

<?php
include("config.php"); 
include("header.php"); 
 try {
   $sql = "SELECT * FROM auditplan WHERE id = :cid";
   $stmt = $DB->prepare($sql);
   $stmt->bindValue(":cid",intval($_GET['cid']));   
   $stmt->execute();
   $results = $stmt->fetchAll();
} catch (Exception $ex) {
  echo $ex->getMessage();
}

?>    

<div class="col-md-10 main">       

    <h1 class="page-header">
         Audit Plan Edit          
    </h1>   

 <form class="form-horizontal" role="form" action="auditplanedit.php" method="POST">
<div class="form-group">
  <label class="control-label col-sm-2" for="usr">Audit ID:</label>  
    <div class="col-sm-5"> 
      <input  type="text" class="form-control" id="auditid" name ="auditid"  value="<?php echo $results[0]["auditid"] ?>">
    </div>
</div>

<div class="form-group">
  <label class="control-label col-sm-2" for="pwd">Year:</label>
    <div class="col-sm-5">
        <input type="text" class="form-control col-xs-3" id="year" name ="year" value="<?php echo $results[0]["year"] ?>">
    </div>
</div>

<div class="form-group">
  <label class="control-label col-sm-2" for="usr">Month:</label>
    <div class="col-sm-5">
        <input  type="text" class="form-control" id="month" name ="month" value="<?php echo $results[0]["month"] ?>">
    </div>
</div>

 <div class="form-group">
  <label class="control-label col-sm-2 " for="sel1">Status:</label>
    <div class="col-sm-5">
      <select class="form-control" id="sel1" name="status">
        <option>Planned</option>
        <option>Scheduled</option>
        <option>Completed</option>
        <option>Cancelled</option>
      </select>
    </div>
</div>

 <div class="form-group">
  <label class="control-label col-sm-2" for="comment">Comment:</label>
    <div class="col-sm-5">
        <textarea class="form-control" rows="3" id="comment" name="comment" value="<?php echo $results[0]["comment"] ?>"></textarea>
    </div>
</div>  

<div class="form-group">        
      <div class=" col-sm-offset-3">
        <button type="submit" name="submit" id ="submit" class="btn btn-primary">Update</button>
        <button type="submit" name="submit1" id ="clear" class="btn btn-primary">Cancel</button>
      </div>

 </div>     
</form>           
</div>

<?php
    if(isset($_POST['submit']))
        {               
            $audit=trim($_REQUEST['auditid']);
            $year=trim($_REQUEST['year']);
            $month=trim($_REQUEST['month']);        
            $status =$_REQUEST['status'];
            $comment=$_REQUEST['comment'];
            $cid = intval($_GET['cid']);  ////here it returns zero

            $sql = "UPDATE auditplan SET `auditid` = :audit, `year` = :year, `month` = :month, `status` = :status, `comment` = :comment" . "WHERE id = :cid ";


        try {           
              $stmt = $DB->prepare($sql);            
              $stmt->bindValue(":audit", $audit);
              $stmt->bindValue(":year", $year);
              $stmt->bindValue(":month", $month);
              $stmt->bindValue(":status", $status);
              $stmt->bindValue(":comment", $comment); 
              $stmt->bindValue(":cid", $cid);                
              $stmt->execute();
              $result = $stmt->rowCount();    

            } 
            catch (Exception $ex)
            {
              $_SESSION["errorType"] = "danger";
              $_SESSION["errorMsg"] = $ex->getMessage();
            }       
    }               
?>

你用双引号(")里面是错误的。请试试下面:

注意:确保您的 $row["id"] 包含正确的值。

第一段代码:

<?php
//Store id into variable...
$getId = $row["id"];
?>

<td> 
    <a href="auditplanedit.php?cid=<?php echo $getId; ?>"><i class="ion ion-edit"></i></a>
    <a href="deleteauditplan.php?cid=<?php echo $getId; ?>" onclick="return confirm('Are you sure?')"><i class="ion ion-close"></i></a>                
</td>

第二个代码段:

<?php
include("config.php"); 
include("header.php"); 
 try {
   $sql = "SELECT * FROM auditplan WHERE id = :cid";
   $stmt = $DB->prepare($sql);
   $stmt->bindValue(":cid",intval($_GET['cid']));   
   $stmt->execute();
   $results = $stmt->fetchAll();
} catch (Exception $ex) {
  echo $ex->getMessage();
}

?>    

<div class="col-md-10 main">       

    <h1 class="page-header">
         Audit Plan Edit          
    </h1>   

 <form class="form-horizontal" role="form" action="auditplanedit.php" method="POST">
<div class="form-group">
  <label class="control-label col-sm-2" for="usr">Audit ID:</label>  
    <div class="col-sm-5"> 
      <input  type="text" class="form-control" id="auditid" name ="auditid"  value="<?php echo $results[0]['auditid'] ?>">
    </div>
</div>

<div class="form-group">
  <label class="control-label col-sm-2" for="pwd">Year:</label>
    <div class="col-sm-5">
        <input type="text" class="form-control col-xs-3" id="year" name ="year" value="<?php echo $results[0]['year'] ?>">
    </div>
</div>

<div class="form-group">
  <label class="control-label col-sm-2" for="usr">Month:</label>
    <div class="col-sm-5">
        <input  type="text" class="form-control" id="month" name ="month" value="<?php echo $results[0]['month'] ?>">
    </div>
</div>

 <div class="form-group">
  <label class="control-label col-sm-2 " for="sel1">Status:</label>
    <div class="col-sm-5">
      <select class="form-control" id="sel1" name="status">
        <option>Planned</option>
        <option>Scheduled</option>
        <option>Completed</option>
        <option>Cancelled</option>
      </select>
    </div>
</div>

 <div class="form-group">
  <label class="control-label col-sm-2" for="comment">Comment:</label>
    <div class="col-sm-5">
        <textarea class="form-control" rows="3" id="comment" name="comment" value="<?php echo $results[0]['comment'] ?>"></textarea>
    </div>
</div>  

<div class="form-group">        
      <div class=" col-sm-offset-3">
        <button type="submit" name="submit" id ="submit" class="btn btn-primary">Update</button>
        <button type="submit" name="submit1" id ="clear" class="btn btn-primary">Cancel</button>
      </div>

 </div>     
</form>           
</div>

<?php
    if(isset($_POST['submit']))
        {               
            $audit=trim($_REQUEST['auditid']);
            $year=trim($_REQUEST['year']);
            $month=trim($_REQUEST['month']);        
            $status =$_REQUEST['status'];
            $comment=$_REQUEST['comment'];
            $cid = intval($_GET['cid']);  ////here it returns zero

            $sql = "UPDATE auditplan SET `auditid` = :audit, `year` = :year, `month` = :month, `status` = :status, `comment` = :comment" . "WHERE id = :cid ";


        try {           
              $stmt = $DB->prepare($sql);            
              $stmt->bindValue(":audit", $audit);
              $stmt->bindValue(":year", $year);
              $stmt->bindValue(":month", $month);
              $stmt->bindValue(":status", $status);
              $stmt->bindValue(":comment", $comment); 
              $stmt->bindValue(":cid", $cid);                
              $stmt->execute();
              $result = $stmt->rowCount();    

            } 
            catch (Exception $ex)
            {
              $_SESSION["errorType"] = "danger";
              $_SESSION["errorMsg"] = $ex->getMessage();
            }       
    }               
?>

首先,您的表单正在使用 POST 方法 method="POST" 但您正在尝试访问 $_GET['cid']

其次,您在名为 cid 的表单中没有输入字段,因此即使您使用 $_POST['cid'] 您也不会得到任何东西。

所以首先你需要在你的表单中添加一个名为 cid 的字段,现在我会使用这样的 hidden 字段,这样用户就不会看到它。

<form class="form-horizontal" role="form" action="auditplanedit.php" method="POST">


<input type="hidden" name="cid" value="<?php echo $results[0]['id'] ?>">


<div class="form-group">
  <label class="control-label col-sm-2" for="usr">Audit ID:</label>  
    <div class="col-sm-5"> 
      <input  type="text" class="form-control" id="auditid" name ="auditid"  value="<?php echo $results[0]['auditid'] ?>">
    </div>
</div>

然后在您的更新查询中使用像这样的新值

<?php
    if(isset($_POST['submit']))
    {               
        $audit=trim($_REQUEST['auditid']);
        $year=trim($_REQUEST['year']);
        $month=trim($_REQUEST['month']);        
        $status =$_REQUEST['status'];
        $comment=$_REQUEST['comment'];
        //$cid = intval($_GET['cid']);  ////here it returns zero
        $cid = intval($_POST['cid']);  // changed line