通过获取用户id和发送AJAX调用来更新数据库


updating database by getting user id and sending AJAX call

我有一个接受或拒绝新用户的页面。当某人被接受时,他们会进入一个名为"接受用户"的区域,在该区域中,管理员必须更改他们的权限级别或组#。因此,在下面的代码中,我将从user_request表中获取该特定用户的user_id,并希望通过id更新我的users表。我只是想通过AJAX调用我的php文件的选项框更新'组'。

有人看到我做错了什么吗?没有任何东西被更新到我的数据库。我在控制台中没有得到任何错误,

<?php
$con2 = mysqli_connect("localhost", "root", "", "db");
$run2 = mysqli_query($con2,"SELECT * FROM user_requests ORDER BY id DESC");
$runUsers2 = mysqli_query($con2,"SELECT * FROM users ORDER BY id DESC");
$numrows2 = mysqli_num_rows($run2);
    if( $numrows2 ) {
        while($row2 = mysqli_fetch_assoc($run2)){
            if($row2['status'] == "Approved"){
                $approved_id        = $row2['user_id'];
                $approved_firstname = $row2['firstname'];
                $approved_lastname  = $row2['lastname'];
                $approved_username  = $row2['username'];
    if ($approved_firstname == true) {
        echo "Name - ". $approved_firstname . " " . $approved_lastname . "</br>" . 
                "Username - ". $approved_username . "</br></br>"
?>
<div class="change_group_button"> 
     <a class="change_group" href="javascript:void(0)">Change User Permission</a>
</div><br>
<div id="light" class="change_group_popup">
    <a class="close" href="javascript:void(0)">Close</a>
    <form id="update_group" name="Group" action="" method="POST" accept-charset="utf-8">
       <div class="field">
        <label for="group">Group</label>
        <select value='<?php echo $approved_id; ?>' id='approved_id' name='group' required>
            <option value=''><?php echo htmlentities($group); ?></option>
            <option value="1">Bench</option>
            <option value="2">Spectator</option>
            <option value="3">Team Member</option>
            <option value="4">Commissioner</option>
        </select>
    </div>
    <input type="submit" value="submit">
    </form>

AJAX调用。我不确定我的数据部分是否正确。

//AJAX call for updating the group
$(document).ready(function () {
    $('#update_group').on('submit', function (event) {
    event.preventDefault();
        $.ajax({
            url: 'user_group_update.php',
            type: 'POST',
            data: {
                id: $(this).val(), //id
                update_group: $(this).val() //group level
            },
            success: function (data) {
                //do something with the data that got returned
                $("#success").fadeIn();
                $("#success").show();
                $('#success').html('User Permission Level Changed!');
                $('#success').delay(5000).fadeOut(400);
            },
             error: function(jqXHR, textStatus,errorThrown )
            {
              // alert on an http error 
              alert( textStatus +  errorThrown );
            }
        });
        return false;
    });
});

user_group_update文件
$approved_id = $_POST['id'];
$change_group = $_POST['update_group'];
$con = mysqli_connect("localhost","root","","db");
    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s'n", mysqli_connect_error());
        exit();
    }
    $stmt = $con->prepare("UPDATE users SET group=? WHERE id=?");
    if ( false===$stmt ) {
     // Check Errors for prepare
        die('User Group update prepare() failed: ' . htmlspecialchars($con->error));
    }
    $stmt->bind_param('si', $change_group, $approved_id);
    if ( false===$stmt ) {
    // Check errors for binding parameters
        die('User Group update bind_param() failed: ' . htmlspecialchars($stmt->error));
    }
    $stmt->execute();
    if ( false===$stmt ) {
        die('User Group update execute() failed: ' . htmlspecialchars($stmt->error));
    }

我看到一些问题:

1)您将组id和批准的id合并到一个选择元素中。表单不是这样工作的。您需要一个单独的字段来表示已批准的id,例如:

<input type="hidden" value="<?php echo $approved_id; ?>" id="approved_id" name="id" />
<select id='group_id' name='group' required>
    <option value=''><?php echo htmlentities($group); ?></option>
    <option value="1">Bench</option>
    <option value="2">Spectator</option>
    <option value="3">Team Member</option>
    <option value="4">Commissioner</option>
</select>

2)你的data数组应该是这样的:

data: {
    id: $("#approved_id").val(), //id
    update_group: $("#group_id").val() //group level
}

3) user_group_update错误检查,应:

$stmt = $con->prepare("UPDATE users SET group=? WHERE id=?");
if ( !$stmt || $con->error ) {
 // Check Errors for prepare
    die('User Group update prepare() failed: ' . htmlspecialchars($con->error));
}
if(!$stmt->bind_param('si', $change_group, $approved_id)) {
// Check errors for binding parameters
    die('User Group update bind_param() failed: ' . htmlspecialchars($stmt->error));
}
if(!$stmt->execute()) {
    die('User Group update execute() failed: ' . htmlspecialchars($stmt->error));
}