为什么在提交表单更改时出现错误消息

时间:2019-12-24 13:14:28

标签: php sql database content-management-system

我正在尝试建立一个cms系统,管理员可以随时更改已注册用户的ID。此功能可带来所有用户数据。该文件的名称是funstions.php。

function showAllData() {
    global $connection;
    $query = "SELECT * FROM users";
    $result = mysqli_query($connection, $query);

    if(!$result) {
        die('Query FAILED' . mysqli_error($con));
    }

    while($row = mysqli_fetch_assoc($result)) {
       $id = $row['id'];
       echo "<option value='$id'>$id</option>";
    }

这是带有表单的页面。该文件的名称是login_update.php。

<?php 
include 'db.php';
include 'functions.php';
    updateTable();
?>

<div class="container">
    <div class="col-xs-6">

        <form action="index.php" method="post">

            <div class="form-group">
                <label for="username">Username</label>
                    <input type="text" name="username" class="form-control">
            </div>

            <div class="form-group">
                <label for="password">Password</label>
                    <input type="password" name="password" class="form-control">
            </div>
            <div class="form-group">
                <select name="id" id="">
                    <?php 
                        showAllData();
                    ?>
                </select>
            </div>

            <input class="btn btn-primary" type="submit" name="submit" value="Update">
        </form>

    </div>  
</div>

这是更新ID的功能。

function updateTable() {
    if (isset($_POST['submit'])) {

        global $con;
        $username = $_POST['username'];
        $password = $_POST['password'];
        $id = $_POST['id'];

        $query = "UPDATE users SET username = '$username', password = '$password' WHERE id = $id ";

        $result = mysqli_query($con, $query);
        if (!$result) {
            die("QUERY FAILED" . mysqli_error($con));    
        } else {
            echo "Record Updated"; 
        }

    }

}

问题是,当您提交更改时,该功能不起作用,并且在浏览器中抛出错误消息。

  

注意:未定义的索引:第28行的C:\ xampp \ htdocs \ loginapp \ functions.php中的ID   查询失败您的SQL语法有误;检查与您的MariaDB服务器版本相对应的手册,以找到在第1行的''附近使用的正确语法。

我发现问题在于,updateTable函数无法识别$ _POST ['id'],但通常它应该使用..p作为名称。

2 个答案:

答案 0 :(得分:0)

将代码更改为以下代码。如果有效,则可能是您的数据库有问题。

<div class="container">
    <div class="col-xs-6">

        <form action="index.php" method="post">

            <div class="form-group">
                <label for="username">Username</label>
                    <input type="text" name="username" class="form-control">
            </div>

            <div class="form-group">
                <label for="password">Password</label>
                    <input type="password" name="password" class="form-control">
            </div>
            <div class="form-group">
               <select name="id" >
                  <option value="volvo">Volvo</option>
                  <option value="saab">Saab</option>
                  <option value="mercedes">Mercedes</option>
                  <option value="audi">Audi</option>
                </select>
            </div>
            <input class="btn btn-primary" type="submit" name="submit" value="Update">
        </form>

    </div>  
</div>

答案 1 :(得分:0)

错误本身描述了这里的问题。

这里要测试的东西很少

  1. 您在PHP中获得的$ _POST ['id']的输出是什么?
  2. 如果不是上述情况,那么在print_r($ query)和print_r($ result)中会得到什么

以上其中一项将为您提供解决问题的方法。

祝你好运