0

我正在尝试创建一个更新函数,将输入的值添加到数据库中用户的值中。(它将可用于课堂的帐户添加到教师) 到目前为止,我有一个测试按钮,当单击它时应该添加一个帐户,然后刷新页面。

到目前为止,这是我的功能:

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 并将其传递给模型,该模型使用它来查找我们的老师并更新他们拥有的学生帐户数量。到目前为止,只要我对“未使用帐户”有一个固定值,这个方法就可以工作,问题是当我这样做时:

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

“字段列表”中的未知列“数组”

更新teachersuser_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 形式输出数据。当我使用它来检查用户是否至少有一个帐户时,即使用户有零个帐户,它也总是接受为真。

4

2 回答 2

1

还不能回答评论,但是

if($remaining_accounts = 1) 

永远都是真的,试试:

if($remaining_accounts == 1) 

有关比较运算符,请参见PHP 手册

于 2012-08-09T06:11:43.643 回答
1

为此,我建议在您的模型中使用原始 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,你必须使用$this->db->set()第三个参数设置为 FALSE,所以在你的模型中是这样的:

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');
}
于 2012-07-11T19:46:19.703 回答