2012-07-11 20 views
0

我正在嘗試創建一個更新函數,用於將輸入值添加到數據庫中用戶的值。 (它將可以用於班級的帳戶添加到教師)到目前爲止,我有一個測試按鈕,應該在點擊時添加一個帳戶,然後刷新頁面。如何從帶有codeigniter的數據庫檢索INT形式的數據?

這是迄今爲止我的功能:

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'); 
} 

此功能是不可否認馬虎,我還是相當的新本。該功能獲取用戶標識並將其傳遞給使用它的模型,以查找我們的教師並更新他們擁有的學生帳戶的數量。到目前爲止,我有「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 =數組,其中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形式獲取數據。當我使用它來檢查用戶是否至少有一個帳戶時,即使用戶沒有帳戶,它也總是接受爲真。

回答

1

我會建議使用原始的SQL語句在模型中用於此目的:

function add_accounts($uid, $quantity = 1) 
{ 
    $this->db->query(' 
     UPDATE teachers 
     SET unused_accounts=unused_accounts+'.$quantity.' 
     WHERE user_id='.$uid 
    ); 
} 

現在,你可以通過一個使用

$this->teacher_data_model->add_accounts($user_id); 

用戶或任何金額你想使用增加unused_accounts

$this->teacher_data_model->add_accounts($user_id, $amount); 

不確定CodeIgniter的ActiveRecord是否會接受statem耳鼻喉科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'); 
} 
+0

我用原始的SQL和它的工作完全一樣,用ActiveRecord編輯。非常感謝幫助。 – 2012-07-13 13:56:53

+0

然後您可以將答案標記爲已接受;)並歡迎使用StackOverflow! – 2012-07-13 14:10:36

+0

我碰到別的東西;我想這可能與我如何從表格中獲取數據有關。當我嘗試測試用戶是否擁有少於一個帳戶時,它會自動接受它爲真。 if($ remaining_accounts = 1) {redirect('teacher/teach_show_students','refresh');} – 2012-07-13 15:16:19

相關問題