使用CodeIgniter向数据库插入数据

15

尝试使用CodeIgniter将一行数据插入到我的数据库中。

我的数据库表名为Customer_Orders,字段包括CustomerNameOrderLines。变量已经正确提交。

我的控制器是(sales.php):

function new_blank_order_summary() 
  {
      $data = array(
        'OrderLines'=>$this->input->post('orderlines'),
        'CustomerName'=>$this->input->post('customer')
          );
     $this->sales_model->order_summary_insert($data);

    $this->load->view('sales/new_blank_order_summary');
  }

我的模型是(sales_model.php):

function order_summary_insert($data){
    $this->db->insert('Customer_Orders',$data);
}

虽然视图正常加载,但没有数据插入到数据库中。

有任何想法为什么会这样吗?


1
我只是想确保您知道,在大多数使用MySQL的Unix系统上,表名区分大小写。我只能假设,但您可能有OrderLines和orderlines,CustomerName和customername。 - David Houde
谢谢David,我已经纠正了,但还是不起作用。还有其他建议吗?谢谢。 - Smudger
视图和表结构在哪里?你需要添加form_validation来确保你实际上发布了任何内容。 - ahmad
9个回答

24

尝试在您的模型中使用以下内容:

function order_summary_insert()
    $OrderLines=$this->input->post('orderlines');
    $CustomerName=$this->input->post('customer');
    $data = array(
        'OrderLines'=>$OrderLines,
        'CustomerName'=>$CustomerName
    );

    $this->db->insert('Customer_Orders',$data);
}

尝试仅使用控制器来控制视图,并始终在模型中发布您的值。 这使得理解变得更加容易。 您的控制器将是:

function new_blank_order_summary() {
    $this->sales_model->order_summary_insert($data);
    $this->load->view('sales/new_blank_order_summary');
}

我不完全理解这些步骤...$data 在模型中定义,在order_summary_insert方法中使用...在控制器中,它作为一个参数传递给从模型调用的方法。抱歉,我只是不明白这一行代码:$this->sales_model->order_summary_insert($data); 是否指的是来自模型的同一个 $data? - Denis

2

你最好像这样编写代码。

在你的控制器中写入以下代码。

    function new_blank_order_summary() {
     $query = $this->sales_model->order_summary_insert();
     if($query) {
        $this->load->view('sales/new_blank_order_summary'); 
    } else {
        $this->load->view('sales/data_insertion_failed');
    }
  }

在您的模型中
function order_summary_insert() {
    $orderLines = trim(xss_clean($this->input->post('orderlines')));
    $customerName = trim(xss_clean($this->input->post('customer')));
    $data = array(
        'OrderLines'=>$orderLines,
        'CustomerName'=>$customerName
    );

    $this->db->insert('Customer_Orders',$data);
    return ($this->db->affected_rows() != 1) ? false : true;
}

1
查看。
<input type="text" name="name"/>
<input type="text" name="class"/>

控制器

function __construct()
{
    parent:: __construct();
    $this->load->Model('Model');
}

function index()
{
    $this->load->view('view');
}

function user(){
    if (isset($_POST['submit'])){
        $data = array('name'=>$_POST['name'],
                    'class'=>$_POST['class']);
         $this->Model->insert($data);
    }
}

模型

function insert($data)
{
    $this->db->insert('table_name',$data);
    return true;
}

1
function saveProfile(){
    $firstname = $this->input->post('firstname');
    $lastname = $this->input->post('lastname');
    $post_data = array('firstname'=> $firstname,'lastname'=>$lastname);
    $this->db->insert('posts',$post_data);
    return $this->db->insert_id(); 
}

1
根据我所看到的,您在$data数组中使用了小写字段名,在数据库表中使用了大写字段名。

谢谢Kobus,我已经按照你和David的建议将其更改为相同的情况,但仍然无法正常工作。我知道模型正在被调用和运行,因为如果我插入一个回声,我可以看到它。我该如何进行故障排除或从数据库中获取一些反馈?谢谢。 - Smudger
也许在插入数据后返回affected_rows()? return $this->db->affected_rows(); - Kobus Myburgh
这些文件中包含一些有用的日志信息。 PHP错误日志 MySQL日志 Apache访问和Apache错误日志 - Mohammad Naim Dahee

0
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Cnt extends CI_Controller {


 public function insert_view()
 {
  $this->load->view('insert');
 }
 public function insert_data(){
  $name=$this->input->post('emp_name');
  $salary=$this->input->post('emp_salary');
  $arr=array(
   'emp_name'=>$name,
   'emp_salary'=>$salary
   );
  $resp=$this->Model->insert_data('emp1',$arr);
  echo "<script>alert('$resp')</script>";
  $this->insert_view();  
 }
}

更多详情请访问: http://wheretodownloadcodeigniter.blogspot.com/2018/04/insert-using-codeigniter.html


1
嘿,你能再提供一些解释吗?你不应该只是展示代码或者链接,看一下这个链接:https://stackoverflow.com/help/how-to-answer ;) - RomOne

0
function order_summary_insert()
$OrderLines=$this->input->post('orderlines');
$CustomerName=$this->input->post('customer');
$data = array(
'OrderLines'=>$OrderLines,
'CustomerName'=>$CustomerName
);

$this->db->insert('Customer_Orders',$data);
}

0

检查您的控制器:

function order()
    $OrderLines = $this->input->post('orderlines');
    $CustomerName = $this->input->post('customer');
    $data = array(
        'OrderLines' => $OrderLines,
        'CustomerName' =>$CustomerName
    ); 

    $this->db->insert('Customer_Orders', $data);
}

0

只需在您的模型中插入$this->load->database();

function order_summary_insert($data){
    $this->load->database();
    $this->db->insert('Customer_Orders',$data);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接