如何从带有codeigniter的数据库中检索INT表单中的数据?

时间:2012-07-11 19:33:39

标签: php mysql database 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并将其传递给使用它来查找我们的教师并更新他们拥有的学生帐户数量的模型。到目前为止,只要我有'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

'字段列表'中的未知列'数组'

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

2 个答案:

答案 0 :(得分: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');
}

答案 1 :(得分:1)

无法回答评论,但

if($remaining_accounts = 1) 

永远是真的,试试:

if($remaining_accounts == 1) 

请参阅PHP manual for comparison operators