Php 不在CODEIGNITER Mysql中插入数据库

Php 不在CODEIGNITER Mysql中插入数据库,php,mysql,arrays,database,codeigniter,Php,Mysql,Arrays,Database,Codeigniter,不插入..有什么建议吗?? 数据库驱动程序:mysqli 使用Codeigniter 控制器 function add_quote() { $this->form_validation->set_rules('invoice_no', $this->lang->line("invoice_no")); $this->form_validation->set_rules('date', $this->lang-&g

不插入..有什么建议吗?? 数据库驱动程序:mysqli 使用Codeigniter

控制器

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

        }
    }
数组结果:(打印($data))

数组([参考编号]=>Q-SMGP/17-18/000003[公司id]=>1 [公司名称]=>SMGP[车辆编号]=>dfg[供货日期时间]=> 2017-07-15 12:17[供货地点]=>sdafsd[收货人名称]=>safsdaf [收货人地址]=>sdfsdaf[收货人地址]=>6556 [收货人州]=>sdfsa[收货人州代码]=>sdafaf[日期]=> 2017-07-15 12:17【到期日】=>2017-07-15【用户】=>1 [user\u id]=>1[customer\u id]=>3[customer\u name]=>1 [总税额]=>28.0000[总税额]=>2100[总税额]=>2600.0000 [状态]=>已订购[发货]=>500.00[注意]=>)


检查表字段名称是否正确。使用错误的字段名插入可能不起作用

$this->db->last_query();

使用此项查找。它将为您提供insert的sql查询。在phpmyadmin中运行它。

检查表字段名称是否正确。使用错误的字段名插入可能不起作用

$this->db->last_query();
使用此项查找。它将为您提供insert的sql查询。在phpmyadmin中运行它。

请尝试以下方法:

我为
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->impacted_rows()
检查
quotes
选项卡是否插入行的第二种技术

// 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/目录
必须是可写的。此外,必须设置登录
application/config/config.php
的“阈值”。例如,您可能只希望记录错误消息,而不希望记录其他两种类型的错误消息。如果将其设置为零,日志记录将被禁用。

请尝试以下方法:

我为
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->impacted_rows()
检查
quotes
选项卡是否插入行的第二种技术

// 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/目录
必须是可写的。此外,必须设置登录
application/config/config.php
的“阈值”。例如,您可能只希望记录错误消息,而不希望记录其他两种类型的错误消息。如果将其设置为零,日志记录将被禁用。

解决方案(28-02-2019):

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;
    }
function 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]');
    }
根据CI文件()

这将显示是否发生任何错误,否则返回空数组

在我的案例中,它显示发票号不能为空

旧版:

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;
    }
function 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]');
    }
$this->form\u validation->set\u rules('invoice\u no', $this->lang->line(“发票号”)

我错误地包括了这一行…我删除了必需的选项…所以它没有显示错误,什么也不做..所以当我删除这一行时,它工作得非常好..无论如何,谢谢大家解决方案(28-02-2019):

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;
    }
function 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]');
    }
根据CI文件()

这将显示是否发生任何错误,否则返回空数组

在我的案例中,它显示发票号不能为空

旧版:

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;
    }
function 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]');
    }
$this->form\u validation->set\u rules('invoice\u no', $this->lang->line(“发票号”)


我错误地包括了这一行…我删除了必需的选项…所以它没有显示错误,什么也不做..所以当我删除这一行时,它工作得很好..无论如何,谢谢大家检查您的模型验证。您可能在那里遇到验证错误。您在if语句中定义变量,但在之后使用它们,无论它们是否设置。然后尝试插入值,而不检查它们是否存在。检查您的错误日志。不完全是…Bcoz我尝试在表单中打印\u r\u validation()…它非常有效。@MagnusEriksson错误日志没有显示任何内容。您仍然应该重做逻辑以处理不同的情况。永远不要假设您获得了正确的数据或方法调用成功。您还应该在运行时(在代码中的不同位置)转储结果,以查看它是否输入了所有的if等。检查您的模型验证。您可能在那里遇到验证错误。您在if语句中定义变量,但在之后使用它们,无论它们是否设置。然后尝试插入值,而不检查它们是否存在。检查您的错误日志。不完全是…Bcoz我尝试在表单中打印\u r\u validation()…它非常有效。@MagnusEriksson错误日志没有显示任何内容。您仍然应该重做逻辑以处理不同的情况。永远不要假设您获得了正确的数据或方法调用成功。您还应该在运行时(在代码中的不同位置)转储结果,以查看它是否输入了所有的if等。您在上面的[note]中给出的数组=>是空的,这会导致错误。这不是问题…我只是在匿名输入字段中包含表单验证,并删除了必填项…因此它无法提交表单,并且没有显示错误。。。错误行:
$this->form\u validation->set\u rules('invoice\u no',$this->lang->LINE(“invoice\u no”)已解决:
$this->form\u validation->set\u rules('invoice\u no',$this->lang->line(“invoice\u no”),'required')您在上面的[note]=>中给出的数组是空的,这会导致错误。这不是问题…我只是在匿名输入字段中包含了表单验证,并且删除了必需的字段…因此它无法提交表单,而且它也没有显示错误。。。错误行:
$this->form\u validation->set\u rules('invoice\u no',$this->lang->LINE(“invoice\u no”)已解决:
$this->form\u validation->set\u rules('invoice\u no