我最近发布了一个question关于删除数据库中的多行,基本上重新使用代码来更新数据库中的多行,但现在一旦数据库有问题已更新和页面刷新它保持我登出我不知道为什么。在PHP中更新数据库后保持注销状态
这里是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或单击刷新,则会将我注销。
你会在你的PHP文件的顶部调用session_start()吗?我没看到它。 – 2015-01-26 22:48:31
在我的'config.php'文件的底部我有'session_start()'。 ajax和php是两个独立的文件,它们都有'config.php'文件 – iamthestreets 2015-01-26 23:27:13
@iamthestreets,可能需要看看你是如何进行身份验证才能看到问题可能是什么。 – Devon 2015-01-27 02:00:50