PHP - 如何从数据库中检索数据并将其显示在表单中并对其进行更改并进行更新?

时间:2017-02-05 13:26:29

标签: php html mysqli

我是PHP的新手,我已经尝试了PHP一段时间了。我已经能够从我的数据库中检索数据并以一种形式查看它,但是当我尝试更改任何值时,我似乎无法更新它。我的代码如下。我一直在尝试一些事情,对不好的代码感到抱歉

<form action="user.php" method="POST">
                <h4>Edit Account</h4>
                <input type="text" name="editstudent_number" placeholder="Enter Student Number">
                <input type="submit" name="editaccount" value="Search"><br>
                <?php
                    if (isset($_POST['editaccount'])){
                        $GLOBALS['editstudent_number'] = $_POST['editstudent_number'];
                        $editstudent = $GLOBALS['editstudent_number'];

                        $edit_sql = "SELECT username, student_number, email, password, progress, rank FROM users WHERE student_number = '$editstudent'";
                        $edit_query = mysqli_query($conn, $edit_sql);
                        $edit_fetch = mysqli_fetch_assoc($edit_query);

                        $username = $edit_fetch['username'];
                        $student_number = $edit_fetch['student_number'];
                        $email = $edit_fetch['email'];
                        $password = $edit_fetch['password'];
                        $progress = $edit_fetch['progress'];
                        $rank = $edit_fetch['rank'];

                        echo "<input type='text' name='username' value='$username' /><br>";
                        echo "<input type='text' name='student_number' value='$student_number' /><br>";
                        echo "<input type='text' name='email' value='$email' /><br>";
                        echo "<input type='text' name='password' value='$password' /><br>";
                        echo "<input type='text' name='progress' value='$progress' /><br>";
                        echo "<input type='text' name='rank' value='$rank' />";
                        echo "<input type='submit' name='editaccount' value='Save changes' />";                 
                    }

                        $GLOBALS['username'] = $_POST['username'];
                        $GLOBALS['student_number'] = $_POST['student_number'];
                        $GLOBALS['email'] = $_POST['email'];
                        $GLOBALS['password'] = $_POST['password'];
                        $GLOBALS['progress'] = $_POST['progress'];
                        $GLOBALS['rank'] = $_POST['rank'];

                        $edit_username = $GLOBALS['username'];
                        $edit_student_number = $GLOBALS['student_number'];
                        $edit_email = $GLOBALS['email'];
                        $edit_password = $GLOBALS['password'];
                        $edit_progress = $GLOBALS['progress'];
                        $edit_rank = $GLOBALS['rank'];

                    if (isset($_POST['editaccount'])){
                        $sql = "UPDATE users SET username='$edit_username', student_number='$edit_student_number', email='$edit_email', password='$edit_password', progress='$edit_progress', rank='$edit_rank' WHERE student_number = '$editstudent'";
                        $query = mysqli_query($conn, $sql);                     
                    }
                ?>
            </form>

1 个答案:

答案 0 :(得分:1)

“搜索”按钮和“保存更改”按钮具有相同的名称,这可能会导致冲突。

搜索

<input type="submit" name="editaccount" value="Search"><br>

保存

<input type='submit' name='editaccount' value='Save changes' />

并查看代码中两次if (isset($_POST['editaccount'])){的相同情况。

更改名称。

此外,使用不同的FORM进行搜索和更新。

这是我的代码,我已经清理了一下,希望能够正常工作。

<h4>Edit Account</h4>

<!-- search form -->
<form action="user.php" method="POST">
  <input type="text" name="editstudent_number" placeholder="Enter Student Number">
  <input type="submit" name="searchstudent" value="Search"><br>
</form>

<!-- update form -->
<form action="user.php" method="POST">

<?php

  if (isset($_POST['editaccount']))
  {
      $edit_username = $_POST['username'];
      $edit_student_number = $_POST['student_number'];
      $edit_email = $_POST['email'];
      $edit_password = $_POST['password'];
      $edit_progress =$_POST['progress'];
      $edit_rank = $_POST['rank'];

      $sql = "UPDATE users SET username='$edit_username', student_number='$edit_student_number', email='$edit_email', password='$edit_password', progress='$edit_progress', rank='$edit_rank' WHERE student_number = '$edit_student_number'";
      $query = mysqli_query($conn, $sql);                     
  }

  if (isset($_POST['searchstudent']))
  {
      $editstudent = $_POST['editstudent_number'];

      $edit_sql = "SELECT username, student_number, email, password, progress, rank FROM users WHERE student_number = '$editstudent'";
      $edit_query = mysqli_query($conn, $edit_sql);
      $edit_fetch = mysqli_fetch_assoc($edit_query);

      $username = $edit_fetch['username'];
      $student_number = $edit_fetch['student_number'];
      $email = $edit_fetch['email'];
      $password = $edit_fetch['password'];
      $progress = $edit_fetch['progress'];
      $rank = $edit_fetch['rank'];

      echo "<input type='text' name='username' value='$username' /><br>";
      echo "<input type='text' name='student_number' value='$student_number' /><br>";
      echo "<input type='text' name='email' value='$email' /><br>";
      echo "<input type='text' name='password' value='$password' /><br>";
      echo "<input type='text' name='progress' value='$progress' /><br>";
      echo "<input type='text' name='rank' value='$rank' />";
      echo "<input type='submit' name='editaccount' value='Save changes' />";                 
  }
  else
  {
    echo "Please search the student number to update the details.";
  }

?>

</form>

只需注意,您不应该允许用户更新表格的PRIMARY KEY。在您的情况下,学生编号是主键,但您允许用户更新它。这将导致更新过程中的冲突和错误。