2017-07-15 267 views
1

沒有插入..任何建議? DB驅動程序:mysqli 使用Codeigniter。在CODEIGNITER中沒有插入數據庫Mysql

控制器

function add_quote() 
    { 

     $this->form_validation->set_rules('invoice_no', $this->lang->line("invoice_no")); 
     $this->form_validation->set_rules('date', $this->lang->line("date"), 'required'); 
     $this->form_validation->set_rules('customer', $this->lang->line("customer"), 'required'); 
     if($this->input->post('customer') == 'new') { 
      $this->form_validation->set_rules('state', $this->lang->line("state")); 
      $this->form_validation->set_rules('gstin', $this->lang->line("gstin")); 
      $this->form_validation->set_rules('company', $this->lang->line("company")." ".$this->lang->line("name"), 'required'); 
      $this->form_validation->set_rules('email', $this->lang->line("customer")." ".$this->lang->line("email_address"), 'required|valid_email|is_unique[customers.email]'); 
      $this->form_validation->set_rules('phone', $this->lang->line("phone"), 'required|min_length[6]|max_length[16]'); 
     } 

     if ($this->form_validation->run() == true) { 

      print_r("helo World"); 
      exit; 

      $form = $this->sales_model->process_form(); 
      $customer_data = $form['customer_data']; 
      $products = $form['products']; 
      $data = $form['data']; 
      $dum = 'Q-'.$data['reference_no']; 
      $data['reference_no'] = $dum; 
      //unset($data['due_date'], $data['recurring']); 

      //echo '<pre />'; var_dump($data); var_dump($products); die(); 
     } 

     //$data1 = array('reference_no' => 1); 
     //$this->db->insert('customers',$data1); 
     if ($this->form_validation->run() == true && $this->sales_model->addQuote($data, $products, $customer_data)) { 

      $this->session->set_flashdata('message', $this->lang->line("quote_added")); 
      redirect("sales/quotes"); 

     } else { 

      $this->data['error'] = (validation_errors() ? validation_errors() : $this->session->flashdata('error')); 
      $this->data['inv'] = false; 
      $this->data['q'] = true; 
      $this->data['customers'] = $this->sales_model->getAllCustomers(); 
      $this->data['tax_rates'] = $this->sales_model->getAllTaxRates(); 
      $this->data['companies'] = $this->sales_model->getAllCompanies(); 
      $this->data['page_title'] = $this->lang->line("new_quote"); 
      $this->page_construct('sales/add_quote', $this->data); 

     } 
    } 

型號:

public function addQuote($data = array(), $items = array(), $customer = array()) { 

     if(!empty($customer)) { 

      if($this->db->insert('customers', $customer)) { 
       $customer_id = $this->db->insert_id(); 
      } 
      $data['customer_id'] = $customer_id; 
     } 

     if($this->db->insert('quotes', $data)) { //Not inserted so Not enter into this loop 

      $quote_id = $this->db->insert_id(); 

      foreach ($items as $item) { 
       $item['quote_id'] = $quote_id; 
       $this->db->insert('quote_items', $item); 
      } 
      return true; 
     } 
     else{ 
      print_r("not inserted DATA"); 
      exit; 
     } 

     return false; 
    } 

陣列結果:(的print_r($數據))

陣列([reference_no] => Q-SMGP/17-18/000 003 [company_id] => 1 [company_name] => SMGP [vehicle_no] => dfg [date_time_supply] => 2017-07-15 12:17 [place_supply] => sdafsd [consignee_name] => safsdaf [consignee_address] => sdfsdaf [consignee_gstin] => 6556 [consignee_state] => sdfsa [consignee_state_code] => sdafaf [date] => 2017-07-15 12:17 [due_date] => [expiry_date] => 2017-07- 15 [user] => 1 [user_id] => 1 [customer_id] => 3 [customer_name] =>種子出現 [total_tax] => 28.0000 [total] => 2100 [grand_total] => 2600.0000 [status] => [shipping] => 500.00 [note] =>)

+0

檢查您的模型驗證。你可能會在那裏得到驗證錯誤。 – urfusion

+0

您正在if語句中定義變量,但在之後使用它們,無論它們是否設置。然後你試圖插入值而不檢查它們是否存在。檢查你的錯誤日誌。 –

+0

不完全... Bcoz我試過Form_validation()內的print_r ...和它完美的作品.. –

回答

2

檢查表字段名稱。錯誤的字段名稱插入可能不起作用。

$this->db->last_query(); 

用此找到。它會給你插入的SQL查詢。在phpmyadmin中運行它。

+0

我檢查了很多次,但它不會工作.. :( –

+0

你在上面給出的數組[=]是空的,導致錯誤。 –

+0

它不是一個問題...我只是將表單驗證包括到匿名輸入字段和我刪除了要求。所以它不能提交表單並且還沒有顯示出錯誤... 錯誤行: '$這個 - > form_validation-> set_rules(「invoice_no」,$這個 - >朗>線( 「invoice_no」));' 解決: '$這 - > form_validation-> set_rules( 'invoice_no',$這 - >朗>線( 「invoice_no」), '必要');' –

0

試試這個方法:

我已經添加了兩個技術爲quotes表插入查詢檢查插入或數據。

public function addQuote($data, $items, $customer) { 

    if(!empty($customer)) { 

     if($this->db->insert('customers', $customer)) { 
      $customer_id = $this->db->insert_id(); 
     } 
     $data['customer_id'] = $customer_id; 
    } 


    if(!empty($data)){ 

     $this->db->insert('quotes', $data); 
     $quote_id = $this->db->insert_id(); 

     // You can use one of this technique 
     //one is the last inserted id 
     // Second technique is described after this code 

     if($quote_id > 0){ 

      foreach ($items as $single_item) { 
       $single_item['quote_id'] = $quote_id; 
       $this->db->insert('quote_items', $single_item); 
      } 
      return TRUE; 

     } else { 

      print_r("not inserted DATA"); 
      exit; 

     } 

    }  
    return FALSE; 
} 

此的$this->db->affected_rows()第二技術來檢查quotes tabke插入的行或沒有。

// OR Second, You can use affected rows 

if($this->db->affected_rows() == '1'){ 

    foreach ($items as $single_item) { 
     $single_item['quote_id'] = $quote_id; 
     $this->db->insert('quote_items', $single_item); 
    } 
    return TRUE;    
} 

我假設你已經正確地使用了所有的列名。 Codeigniter有一個日誌系統,可以查看系統中可以使用的內容。

log_message('error', 'Last query executed you can write here regarding log message: '. print_r($this->db->last_query(), TRUE)); 

爲了實際寫入日誌文件,logs/ directory必須是可寫的。另外,您必須設置登錄application/config/config.php的「閾值」。例如,您可能只想記錄錯誤消息,而不是其他兩種類型。如果您將其設置爲零,則日誌記錄將被禁用。

0

功能add_quote() {

$this->form_validation->set_rules('invoice_no', $this->lang->line("invoice_no")); //This line is the Main problem... 
    $this->form_validation->set_rules('date', $this->lang->line("date"), 'required'); 
    $this->form_validation->set_rules('customer', $this->lang->line("customer"), 'required'); 
    if($this->input->post('customer') == 'new') { 
     $this->form_validation->set_rules('state', $this->lang->line("state")); 
     $this->form_validation->set_rules('gstin', $this->lang->line("gstin")); 
     $this->form_validation->set_rules('company', $this->lang->line("company")." ".$this->lang->line("name"), 'required'); 
     $this->form_validation->set_rules('email', $this->lang->line("customer")." ".$this->lang->line("email_address"), 'required|valid_email|is_unique[customers.email]'); 
     $this->form_validation->set_rules('phone', $this->lang->line("phone"), 'required|min_length[6]|max_length[16]'); 
    } 

$這 - > form_validation-> set_rules( 'invoice_no', $這 - >朗>線( 「invoice_no」));

誤我只包含這條線......而我除去必需的選項......所以,也沒有任何錯誤,做nothing..So當我刪除了這條線,它完美地working..anyway三江源所有