CodeIgniterを使用してデータベースに行を挿入しようとしています。
データベーステーブルはCustomer_Orders
およびフィールドはCustomerName
およびOrderLines
です。変数は正しく送信されています。
私のコントローラーは(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);
}
ビューが正しくロードされている間は、データベースにデータは挿入されません。
なぜそうでないかについてのアイデアはありますか?
あなたのモデルでこれを試してください:
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');
}
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();
}
このようなコードを書く方が良いでしょう。
コントローラーでこのコードを記述します。
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;
}
ここで見たものに基づいて、$data
配列では小文字のフィールド名を使用し、データベーステーブルでは大文字のフィールド名を使用しました。
モデルに$this->load->database();
を挿入するだけです:
function order_summary_insert($data){
$this->load->database();
$this->db->insert('Customer_Orders',$data);
}
コントローラーを確認します。
function order()
$OrderLines = $this->input->post('orderlines');
$CustomerName = $this->input->post('customer');
$data = array(
'OrderLines' => $OrderLines,
'CustomerName' =>$CustomerName
);
$this->db->insert('Customer_Orders', $data);
}
見る
<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;
}
<?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
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);
}