数据未更新到数据库

时间:2019-05-13 15:49:45

标签: php html mysql sql

我有一个用来将数据插入数据库的表格和一个表,其中显示了来自同一数据库的记录。我在显示的每个记录上都有更新按钮。

当我单击它时,来自数据库的数据将显示在表单的每个输入中;我已经修改了所需的信息,然后从表单中单击更新按钮。

问题是我修改的数据没有在数据库中更新,也没有显示在页面表中。

我的index-admin.php文件:

<?php
    include("functions.php");

    //fetch record to be updates

    if(isset($_GET['update'])){
        $id = $_GET['update'];
        $update = true;
        $query="SELECT * FROM utilizatori WHERE id_user= $id";
        $record = mysqli_query($conn,$query);


       if (count($record) == 1 ) {
           $rec = mysqli_fetch_array($record);
            $id=$rec['id_user'];
              $nume=$rec['nume'];        
              $prenume=$rec['prenume'];  
              $email=$rec['email'];  
              $pwd=$rec['pass'];  
              $rol=$rec['rol'];  
        }
    }

?>

我的表单:

<form method="POST" action="functions.php">
       <input type="hidden" name="id" value="<?php echo $id; ?> ">
        <div class="input-group">
            <label>Nume</label>
            <input type="text" name="nume" value="<?php echo $nume; ?>">
        </div>
        <div class="input-group">
            <label>Prenume</label>
            <input type="text" name="prenume" value="<?php echo $prenume; ?>" >
        </div>
        <div class="input-group">
            <label>Email</label>
            <input type="text" name="email" value="<?php echo $email; ?> ">
        </div>
        <div class="input-group">
            <label>Password</label>
            <input type="text" name="pass" value="<?php echo $pwd; ?> ">
        </div>
        <div class="input-group">
            <label>Rol</label>
            <input type="text" name="rol" value="<?php echo $rol; ?> "  >
        </div>
         <div class="input-group">

           <?php if ($update == false): ?> 
               <button type="submit" name="save" class="btn">Save</button>
           <?php else: ?>
               <button type="submit" name="update" class="btn">Update</button>
           <?php endif ?>

        </div>
    </form>

我的functions.php文件:

if(isset($_POST['update'])) {
    $nume       = mysqli_real_escape_string($conn,$_POST['nume']);
    $prenume    = mysqli_real_escape_string($conn,$_POST['prenume']);
    $email      = mysqli_real_escape_string($conn, $_POST['email']);
    $pwd        = mysqli_real_escape_string($conn, $_POST['pass']);
    $rol        = mysqli_real_escape_string($conn, $_POST['rol']);

    $query="UPDATE utilizatori 
                SET nume='$nume', 
                    prenume='$prenume', 
                    email='$email', 
                    pass='$pwd', 
                    rol='$rol' 
            WHERE id_user=$id;";  

    mysqli_query($conn,$query);
    $_SESSION['msg'] = 'Date actualizate!';
    header('Location:index-admin.php');
}

1 个答案:

答案 0 :(得分:1)

$id中似乎未定义functions.php。它仅存在于index-admin.php中,并且在提交表单时,该代码未运行。 Web应用程序是无状态,变量值在请求之间不会持久存在。变量值也不会神奇地在单独的脚本文件之间传递(除非在同一请求中通过“ include”或“ require”语句调用它们)。

但是您实际上已经部分解决了该问题。加载index-admin时,您已经将ID放在表单的隐藏字段中。现在,您只需要创建一个新变量即可在functions.php中读取它:

if(isset($_POST['update'])) {
  $id = $_POST["id"];

作为一个单独的观点,我看不出为什么您还在index-admin脚本中写了include("functions.php"); ...您的表单直接发回到functions.php,而不是index-admin.php。在该页面中包含functions.php毫无意义...据我所知,它不会做任何有用的事情。


请注意有关SQL注入的注释中的警告。这是一个严重的漏洞,您应该尽快修复它,最好是在开始测试代码之前(这样,在您重新编写查询代码后就不必重新测试它了)。