2011-08-20 117 views
2

我有兩個表,一個是'student',另一個是'status'。學生表有一個外鍵status_status_id。我想更新這個status_status_field。在我看來,所有狀態(初中,高中,新生,二年級)都顯示在下拉菜單中。使用Codeigniter更新數據庫表中的字段

我想通過從該下拉列表中獲取輸入來更新學生表的status_status_id(最初具有值0)字段。爲了更新,我還需要一個特定學生的ID。問題是該字段的status_status_id沒有更新。下面的錯誤是,列明

 A Database Error Occurred 

     Error Number: 1054 

     Unknown column 'Array' in 'where clause' 

     UPDATE `student` SET `0` = '' WHERE `id` = Array 

     Filename: Z:\www\CI\system\database\DB_driver.php 

    Line Number: 330 

我控制器

function update(){ 
$id=$this->input->post('id'); 
$data=array(
'status_status_id'=>$this->input->post('status_status_id'), 
); 
$this->status_model->update($data, $id); 
} 
} 

我的模型

function update($data,$id){ 

$this->db->where('id', $id); 
$this->db->update('student', $data); 
} 
     } 

查看添加狀態

<?php echo form_open('status_controller/update'); 
    $r=$info[0]->id; 
    $data=array (
    'id'=>$r, 
'status_status_id'=>set_value('status_status_id') 
      ); 
      ?> 
      <p><?php echo form_input($data); ?> 
     <p><select name ='status_status_id'> 
     <?php echo form_error('status_status_id'); ?> 
     <br /><?php 
    $getType = mysql_query("SELECT status_id, status FROM status ORDER BY status_id"); 
     while($type = mysql_fetch_object($getType)){ 
    echo "<option value=\"{$type->status_id}\">{$type->status} </option>",set_value('status_status_id'); 
} ?></p><p><?php echo form_submit('submit', 'Update Status'); ?></p><?php echo form_close(); ?> 
+0

哪條線#41在你的控制器? –

+0

奇怪的是我在第41行沒有任何東西。控制器在第39行結束。第41行沒有任何內容。我不知道發生了什麼。 – tan

+0

問題解決了。我重新啓動我的電腦,錯誤消失了:D ..但現在問題是status_status_id字段不更新在學生表中。 – tan

回答

3

我看到有幾個錯誤觀點。我會用評論重寫它,然後它應該工作。

請注意,您應該將所有數據庫查詢移到視圖之外,當然還要添加驗證。我不確定ID是否實際上是一個整數。

// I suppose this gives us a single ID, not an array of IDs or something else 
$r = $info[0]->id; 

// put the ID in a hidden field, so POST sends an "id" variable 
$hidden_fields = array('id' => $r); 

// add the hidden fields directly in form_open() 
echo form_open('status_controller/update', '', $hidden_fields); 

// making $getType = mysql_query("SELECT status_id, status FROM status ORDER BY status_id"); in an active record way 
$this->db->select('status_id, status'); 
$this->db->order_by('status_id', 'asc'); 
$query = $this->db->get('status'); 

// loop to make an array of the statuses to insert in form_dropdown() array('value' => 'display') 
$statuses = array(); 
foreach ($query->result() as $row) 
{ 
    $statuses[$row->status_id] = $row->status; 
} 

// you would probably be able to get the current status_status_id 
// I will suppose that $info[0]->status_status_id holds that data 
echo form_dropdown('status_status_id', $statuses, set_value('status_status_id', $info[0]->status_status_id)); 
echo form_error('status_status_id'); 
echo form_submit('submit', 'Update Status'); 
echo form_close(); 

控制器:

function update(){ 
    // again, this is suspicious from your example, check if it's not an Array 
    $id = $this->input->post('id'); 
    $data = array(
     'status_status_id' => $this->input->post('status_status_id'), 
    ); 

    $this->status_model->update($data, $id); 
} 

型號:

function update($data, $id){ 
    $this->db->where('id', $id); 
    $this->db->update('student', $data); 
} 
+0

真的很有幫助..感謝:) – tan

相關問題