如何使用codeigniter从数据库中检索INT形式的数据


How do I retrieve data in INT form from a database with codeigniter?

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

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

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) 

有关比较运算符

,请参阅PHP手册