簡體   English   中英

使用 php 的 HTML 表單不會更新 mysql

[英]HTML Form using php doesn't update mysql

當我更改表單中的信息時,該信息應該放在 $_POST 中。 接下來, if (isset($_POST["submit"]))應該運行查詢以更新 MySQL 中的表。 但是,MySQL 中沒有任何更新。 我假設有一個簡單的修復方法,因為我正在學習這個。

此外,有關如何調試此類問題的任何建議都會有所幫助。 我正在使用記事本++和學校的服務器。

<?php require_once("session.php"); ?>
<?php 
  require_once("included_functions.php");
  new_header("Here is Who's who!", "CRUD/editPeople.php"); 
  $mysqli = db_connection();
  if (($output = message()) !== null) {
     echo $output;
  }

  if (isset($_POST["submit"])) {
     $ID = $_GET["id"];
     // UPDATE query on $ID
     $query = "UPDATE people SET ";
     $query .= "FirstName = '".$_POST["FirstName"];
     $query .= "', LastName = '".$_POST["LastName"];
     $query .= "', Birthdate = '".$_POST["Birthdate"];
     $query .= "', BirthCity = '".$_POST["BirthCity"];
     $query .= "', BirthState = '".$_POST["BirthState"];
     $query .= "', Region = '".$_POST["Region"]."' ";
     $query .= "WHERE PersonID = {$ID}";
     //Output query results and return to readPeople.php
     $result = $mysqli->query($query);

     if($result) {
       $_SESSION["message"] = $_POST["FirstName"]." ".$_POST["LastName"]." has been changed";
     } else {
       $_SESSION["message"] = "Error! Could not change ".$_POST["FirstName"]." ".$_POST["LastName"];
     }
     //Once the Edit has been completed (CHANGE button clicked)
     //redirect to the readPeople.php webpage
     header("Location: readPeople.php");
     exit;
   } else { 
  // GET id and create a query to SELECT * on the id
      if (isset($_GET["id"]) && $_GET["id"] !== "") {
      // Get id
      $ID = $mysqli->real_escape_string(trim($_GET['id']));

      $query = "SELECT * FROM people WHERE ";
      $query .= "PersonID = '".$ID."'";
      $result = $mysqli->query($query);
      //Process query
      if ($result && $result->num_rows > 0) {
         $row = $result->fetch_assoc();
         echo "<div class='row'>";
         echo "<label for='left-label' class='left inline'>";
         echo "<h3>".$row["FirstName"]." ".$row["LastName"]."'s Profile</h3>";

         // Create form with inputs for each field in people table
         echo "<p><form action = 'editPeople.php?id={$ID}' method='post'>";
         echo "<p><input type = 'text' name = 'FirstName' value = '".
             $row["FirstName"]."'/></p>";
         echo "<p><input type = 'text' name = 'LastName' value = '".
             $row["LastName"]."'/></p>";
         echo "<p><input type = 'text' name = 'Birthdate' value = '".
             $row["Birthdate"]."'/></p>"; 
         echo "<p><input type = 'text' name = 'BirthCity' value = '".
             $row["BirthCity"]."'/></p>";
         echo "<p><input type = 'text' name = 'BirthState' value = '".
             $row["BirthState"]."' /></p>";
         echo "<p><input type = 'text' name = 'Region' value = '".
             $row["Region"]."' /></p>";

         echo "<p><input type='submit' value='Update' /></p>";  
         echo "</form>";
    echo "<br /><p>&laquo:<a href='readPeople.php'>Back to Main Page</a>";
    echo "</label>";
    echo "</div>";
    }
         //Query failed to exit. Return to readPeople.php and output error
         else {
         $_SESSION["message"] = "Person could not be found!";
         header("Location: readPeople.php");
         exit;
    }}}
?>
<?php  new_footer("Who's Who"); ?>

在您的 HTML 表單中,沒有name="submit"任何輸入,因此if (isset($_POST["submit"]))此條件為假。

在提交按鈕中添加name="submit"

echo "<p><input type='submit' name='submit' value='Update' /></p>";  

為了調試和查找正在傳遞的內容,我使用了print_r($_POST)print_r($_GET)

我在大多數使用表單的腳本中使用它來控制傳遞的內容。 但當然只在開發服務器上。

您的按鈕沒有名稱。 將 name="submit" 放在按鈕中。 因此,isset($_POST['SUBMIT']) 不起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM