如何使用PHP更新SQL数据库表?

时间:2017-11-22 18:14:41

标签: php html mysql

我需要更新数据库,问题是:无法加载我想要更新的“id”或用户。如果我根据“id”选择用户,则应用程序不知道找到该用户,没有用户。我不知道要纠正这个问题。谢谢你的帮助。 PHP代码:

       <?php 
       $id_user=$_GET['id'];

        $server_name="localhost";
        $db_user_name="root";
        $password="root";
        $db_name="prva";
        $connection=mysqli_connect($server_name, $db_user_name,$password,$db_name);

        if($connection) {
            echo 'Connected';}

        if($_SERVER['REQUEST_METHOD'] == 'GET' && $_GET['edit_user_form']){
            $user_name = $_GET['user_name'];
            $user_surname = $_GET['user_surname'];

            if(preg_match('#^.{0,50}$#', $user_name) &&
               preg_match('#^.{1,50}$#', $user_surname)){

            $sql_query = "UPDATE users SET user_name="; 
            if($user_name){
            $sql_query .= "'".$user_name."',";
            }else{
            $sql_query .= "NULL,";
            }

            $sql_query .= "user_surname='".$user_surname."'";


            $sql_query .= " WHERE id=".$id_user.";";

            $result = mysqli_query($connection, $sql_query);


                      if ($result) {
                          echo '<p class="success">Updated</p>';
                            }else{
                          echo '<p class="error">Error</p>';
                          }
                          // echo "Error: " . $sql_query . "<br>" . mysqli_error($connection);

                }else{

                echo '<p class="error">Wrong data </p>';
                      }
              }

       if($id_user){
       $sql_query = "SELECT * FROM users WHERE id=".$id_user.";";

       $result = mysqli_query($connection, $sql_query);

            if (mysqli_num_rows($result) > 0) {    
            $data = mysqli_fetch_assoc($result);
            $user_name = $data[0]['user_name'];
            $user_surname = $data[0]['user_surname'];?>

表单看起来:

    <form class="contact_form" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="get">
        <label for="user_name">Name</label>
        <input type="text" name="user_name" id="user_name" value="<?php echo $user_name;?>">

        <label for="user_surname">Surname</label>
        <input type="text" name="user_surname" id="user_surname" value="<?php echo $user_surname;?>">

        <input type="submit" name="edit_user_form" value="Update">
        <input type="hidden" name="id_user" value="<?php echo $id_user;?>">
    </form>

PHP代码(其余):

  <?php
    }else{
        echo '<p class="error">Data for editing are not loaded .</p>';
    }

      }else{
      echo '<p class="error">Parameter of user is not loaded .</p>';
    }?>

2 个答案:

答案 0 :(得分:0)

检查HTML中隐藏字段的,需要使用用户ID填充:

<input type="hidden" name="id" value="<?php echo $id_user;?>">

答案 1 :(得分:0)

您从$_GET获取了错误的参数。 您输入的name属性为id_user,但您的id

改为:

$id_user = $_GET['id_user'];

您还应该使用mysqli_real_escape_string来清理您的输入:

$id_user = mysqli_real_escape_string($connection, $_GET['id_user']);
相关问题