gpt4 book ai didi

php - 代码点火器 3 : update Sql table column via GET superglobal

转载 作者:行者123 更新时间:2023-11-30 21:48:43 24 4
gpt4 key购买 nike

我正在使用 CodeIgniter 3 和 Bootstrap 开发一个注册和登录应用程序。

在我的“用户”表中,我有一个“事件”列,它可以将0 或1 作为值。

enter image description here

我希望能够通过单击我的用户 View 中的链接将与用户对应的“事件”列的值从 0 更改为 1(激活用户):

enter image description here

用户 View 中的“激活”按钮代码:

<a href="<?php echo base_url(); ?>users/activate/<?php echo $user->id ?>" title="Enable" class="btn btn-success btn-xs activate-btn"><span class="glyphicon glyphicon-ok"></span> Enable</a>

仍在用户 View 中,每个表行都有用户的ID:

<tr id="<?php echo $user->id ?>">

在我的 Usermodel 模型中我有:

public function activateUser($user_id) {
$query = $this->db->get_where('users', ['id' => $user_id]);
return $query->row();
}

在我的用户 Controller 中我有:

public function activate($user_id) {
$this->load->model('Usermodel');
$user = $this->Usermodel->activateUser($user_id);
if ($user->active == 0) {
echo 'activate user';
} else {
echo 'user already active';
}
}

url users/activate/1 返回“user already active”,而 users/activate/2 返回“activate user”,正如预期的那样。作为 Codeigniter 的新手,我尝试了导致错误的上述代码的多个版本:

public function activateUser($user_id) {
$query = $this->db->get_where('users', ['id' => $user_id])->update('users', $data);
return $query->row();
}

是导致错误的版本之一。

能否请您告诉我我应该在代码中更改哪些内容才能按预期工作?

最佳答案

如果我理解正确,activateUser 应该更新该用户的数据库行,然后返回所有更新的用户信息。您正在尝试将两个应该分开的查询混搭在一起。只需分两步完成:

public function activateUser($user_id) {
$user = null;

$updateQuery = $this->db->where('id', $user_id)->update('users', ['active' => 1]);
if ($updateQuery !== false) {
$userQuery = $this->db->get_where('users', ['id' => $user_id]);
$user = $userQuery->row();
}

return $user;
}

我进行了一些错误检查;例如,如果用户 ID 无效,这将返回 null

基于该错误检查,您的 Controller 代码可能类似于:

public function activate($user_id) {
$this->load->model('Usermodel');
$user = $this->Usermodel->activateUser($user_id);

// $user->active will always be 1 here, unless there was an error

if (is_null($user) {
echo 'error activating user - check user id';
} else {
// I was assuming you would want to do something with the user object,
// but if not, you can simply return a success message.
echo 'user is now active';
}
}

关于php - 代码点火器 3 : update Sql table column via GET superglobal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48253337/

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