2013-05-15 67 views
1

我寫了一個功能,它的工作,除了一個部分:笨 - 無法查詢數據庫

//Find current upload total value 
$this->EE->db->select('upload_total'); 
$upload_total = $this->EE->db->get_where('exp_competition_purchase_upload_total', array('member_id' => $member_id)); 
return $upload_total->result(); 

// If upload total is more than 0  
if($upload_total > 0) { 
    $new_total = $upload_total + $my_data['upload_total']; 
    $my_data['upload_total'] = $new_total; 
} 

誰能告訴我,如果他們能看到的任何問題的代碼的這一特定部分?

這是完整的功能。它運行在一個擴展。該擴展正在工作,它似乎是上面的代碼,沒有。

我基本上只是試圖找到在數據庫中的值,然後如果該值是多個,將值添加到另一個。

function cartthrob_on_authorize() 
{ 
    foreach ($this->EE->cartthrob->cart->items() as $item) { 

     // Create array to store member id and purchased upload slots 
     $my_data = array(
      'member_id' => $this->EE->session->userdata('member_id'), 
      'upload_total' => $item->item_options('fees'), 
     ); 

     // Store member id in variable 
     $member_id = $my_data['member_id']; 

     // Query table to check if there is record with member id exists 
     $query = $this->EE->db->get_where('exp_competition_purchase_upload_total', array('member_id' => $member_id)); 

     // If query returns more than 0 update record 
     if($query->num_rows() > 0) { 

      //Find current upload total value 
      $this->EE->db->select('upload_total'); 
      $upload_total = $this->EE->db->get_where('exp_competition_purchase_upload_total', array('member_id' => $member_id)); 

      // If upload total is more than 0  
      if($upload_total > 0) { 

       $new_total = $upload_total + $my_data['upload_total']; 

       $my_data['upload_total'] = $new_total; 

      } 

      return $upload_total->result(); 

      $this->EE->db->where('member_id', $member_id); 
      $this->EE->db->update('exp_competition_purchase_upload_total', $my_data); 

     // If query returns 0 insert new record   
     } else { 

      $this->EE->db->insert('exp_competition_purchase_upload_total', $my_data); 

     } 
    } 
} 
+2

是啊你不能運行代碼後,你已經返回...'返回$ upload_total->結果();'應該在你的條件語句 – mic

+0

之後完成,當你調用'$ this-> EE-> db'時,你確定你有db的結果嗎? – rcpayan

+0

micb:如果我在發生錯誤後添加它:CI_DB_mysql_result類的對象無法轉換爲int。 – ccdavies

回答

1
//Find current upload total value 
$this->EE->db->select('upload_total'); 
$upload_total = $this->EE->db->get_where('exp_competition_purchase_upload_total', array('member_id' => $member_id))->result_array(); 
$upload_total = $upload_total[0]; 
//If upload total is more than 0 
$upload_total_col = $upload_total['upload_total']>0 ? $upload_total['upload_total']:0; 
$my_data['upload_total'] += $upload_total_col; 

從我所瞭解的你,只是想增加upload_total。

注意事項:不要在您的功能之間使用return $upload_total->result();而不提條件。

+0

對於if($ upload_total-> num_rows()> 0){我不想計算行數。我想查看upload_total列中的值是否大於1.我在上面添加了完整的代碼,更多解釋。 – ccdavies

+0

@ccdavies'$ upload_total-> num_rows()> 0' - >這將檢查查詢是否已從數據庫返回一些值。如果你想檢查upload_total列的值,請檢查我的編輯... –

+0

謝謝。我只是試了一下,然後返回:調用一個非對象的成員函數num_rows() – ccdavies

0

這裏是解決

$this->EE->db->select('upload_total'); 
$upload_total = $this->EE->db->get_where('exp_competition_purchase_upload_total',  array('member_id' => $member_id)); 

// If upload total is more than 0  
if($upload_total->num_rows() > 0) { 
    $result = $upload_total->row_array(); 
    $new_total = $result['upload_total'] + $my_data['upload_total']; 
    $my_data['upload_total'] = $new_total; 
} 
return $my_data; 

嘗試。這是因爲你試圖使用DB返回的對象作爲一個int。查詢的

+0

p.s.我沒有測試它,但它應該沿着正確的路徑指向你:) – mic

+0

'$ result + $ my_data ['upload_total'];' - >你試圖添加一個具有某個整數值的數組......他也在做同樣的錯誤,只是在他的情況下,它的對象... –

+0

啊斑點大聲笑...不是我會錯過正常的:P – mic

0

結果不是整數,它是一個對象

嘗試這樣;

//Find current upload total value 
$this->EE->db->select('upload_total'); 
$upload_total = $this->EE->db->get_where('exp_competition_purchase_upload_total', array('member_id' => $member_id)); 

$result = $upload_total->result(); 

// If upload total is more than 0  
if($upload_total->num_rows() > 0) { 
    $my_data['upload_total'] += $result->upload_total; 
} 

return $my_data; 

順便說一句,我不知道你想做什麼,所以我只是糾正它!