Php 不在CODEIGNITER Mysql中插入数据库
不插入..有什么建议吗?? 数据库驱动程序:mysqli 使用Codeigniter 控制器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
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