我正在尝试创建一个更新函数,将输入的值添加到数据库中用户的值中。(它向老师添加了可以用于课堂的帐户)到目前为止,我有一个测试按钮,点击后应该添加一个帐户,然后刷新页面。
到目前为止,我的功能是:
public function add_account()
{
$this->load->model("teacher_data_model");
$user = $this->ion_auth->user()->row();
$user_id = $user->id;
$data = array(
'user_id' => $user_id,
'unused_accounts' => [what do I insert here?]
);
$this->teacher_data_model->add_accounts($data, $user_id);
redirect('teacher', 'refresh');
}
这个功能无可否认是草率的,我对此还相当陌生。此函数获取用户ID并将其传递给一个模型,该模型使用该ID来查找我们的老师并更新他们拥有的学生帐户数量。到目前为止,只要我有一个固定的"unused_accounts"值,这就行了,问题是当我这样做时:
public function add_account()
{
// Getter of the user data
$user = $this->ion_auth->user()->row();
$user_id = $user->id;
$this->load->model("teacher_data_model");
//This gets the existing accounts
$num_accounts["record"] = $this->teacher_data_model->get_unused_accounts($user_id);
$this->load->view("teacher/teacher_data_viewer", $num_accounts);
$data = array(
'user_id' => $user_id,
'unused_accounts' => [what do I insert here?]
);
// data insertion
$this->teacher_data_model->add_accounts($data, $user_id);
redirect('teacher', 'refresh');
}
我不确定是否要,但控制器或模型中的+1增量,但在这一点上,我甚至无法将搜索到的数据识别为int。
对于[我在这里插入什么?],如果我使用$num_accounts,我会得到以下数据库错误:错误编号:1054
"字段列表"中的未知列"数组"
UPDATE teachers
SET user_id
='1',unused_accounts
=阵列WHERE user_id
='1'
这是我的模型,以备不时之需:
function add_accounts($data, $uid)
{
$this->db->where('user_id', $uid);
$this->db->update('teachers',$data);
}
编辑:这是我从数据库获取数据的函数
function get_unused_accounts($usersid)
{
$this->db->select('unused_accounts');
$this->db->from('teachers');
$this->db->where('user_id', $usersid);
$query = $this->db->get();
return $query->result();
}
我不确定这是否以INT形式显示数据。当我使用它来检查用户是否至少有一个帐户时,即使用户没有帐户,它也总是接受为true。
我建议在您的模型中使用原始SQL来实现此目的:
function add_accounts($uid, $quantity = 1)
{
$this->db->query('
UPDATE teachers
SET unused_accounts=unused_accounts+'.$quantity.'
WHERE user_id='.$uid
);
}
现在,您可以使用将用户的unused_accounts
值增加一
$this->teacher_data_model->add_accounts($user_id);
或者使用任意数量
$this->teacher_data_model->add_accounts($user_id, $amount);
不确定CodeIgniter的ActiveRecord是否会接受语句unused_accounts=unused_accounts+'.$quantity.'
,但如果它接受了,您可以尝试在控制器中使用它它不起作用,请参阅下面的编辑部分:
$data = array(
'user_id' => $user_id,
'unused_accounts' => 'unused_accounts + '.$amount
);
编辑:看起来如果你想使用ActiveRecord,你必须使用第三个参数设置为FALSE的$this->db->set()
,所以你的模型中有这样的东西:
function add_accounts($unused_accounts, $uid, $amount = 1)
{
$this->db->where('user_id', $uid);
$this->db->set('unused_accounts', 'unused_accounts+'.$amount, FALSE);
$this->db->update('teachers');
}
尚未回答评论,但
if($remaining_accounts = 1)
一切都是真的吗?试试:
if($remaining_accounts == 1)
有关比较运算符