gpt4 book ai didi

php - PHP更新数据库后老是登出

转载 作者:行者123 更新时间:2023-11-29 23:09:02 25 4
gpt4 key购买 nike

我最近发布了一个question关于删除数据库中的多行并基本上重新使用代码来更新数据库中的多行,但现在一旦数据库更新并且页面刷新,我就会遇到问题,它会不断地让我退出,我不知道为什么.

这里是ajax:

function editUser(){

var url = 'edit-user.php';
var ids = document.getElementById("edit-user-id").value;
var role = document.getElementById("role").value;
var status = document.getElementById("accountStatus").value;
var data = 'userID=' + ids.toString() + '&role=' + role + '&status=' + status;

$.ajax({
url: url,
data: data,
cache: false,
error: function(e){
alert(e);
},
success: function () {
var selects = $('#users-table').bootstrapTable('getSelections');
ids = $.map(selects, function (row) {
return row.id;
});
$('#users-table').bootstrapTable('refresh', {
silent: true
});
location.reload();
}
});

}

这是 PHP:

require("../config.php");
try{
$role = $_GET['role'];
$status = $_GET['status'];
$ids = array($_GET['userID']);
$inQuery = implode(',', $ids);
$query = 'UPDATE users SET role = :role, account_status = :status WHERE user_id IN ('.$inQuery.')';
$query_params = array(
':role' => $role,
':status' => $status
);
$stmt = $db->prepare($query);
$stmt->execute($query_params);
// Set variable message of affected rows
$count = $stmt->rowCount();
$user_updated = ''.$count.' user(s) updated successfully.';
$_SESSION['user_updated'] = $user_updated;
} catch (Exception $e){
$error = '<strong>The following error occured:</strong>'.$e->getMessage();
$_SESSION['error'] = $error;
}

我尝试更改cache: true,但这不起作用。再说一次,我不想被注销。有什么想法我做错了吗?

编辑:我已将其范围缩小到仅在页面刷新时发生。我从 ajax 调用中删除了这段代码 location.reload(); ,它不会将我重定向回登录页面,但如果我按 F5 或单击刷新,它会将我注销。

最佳答案

对于评论来说太长了:

我不会发现任何事情会导致您丢失 $_SESSION['user'] 中设置的内容。尝试在每个页面上转储 $_SESSION 只是为了跟踪它并暂时禁用重定向(只需输入错误消息或其他内容)。您可以像这样转储数组:

print_r($_SESSION);

您是否也知道您准备好的声明已被破坏?我没有看到 $ids$inQuery 数组或内爆的意义。它应该是这样的:

$stmt = $db->prepare(
'UPDATE users
SET role = ?, account_status = ?
WHERE user_id = ?'
);
$stmt->execute(array($_GET['role'], $_GET['status'], $_GET['userID']));

如果您只有一个条目,则使用 IN 是没有意义的。您也没有保护您的查询免受任何影响,因为您仍在将值插入到准备语句中。

关于php - PHP更新数据库后老是登出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28160148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com