【问题标题】:How to insert and update value in two different tables in codeigniter如何在codeigniter的两个不同表中插入和更新值
【发布时间】:2018-08-13 14:08:57
【问题描述】:

我有两个表“booking”和“schedule”,当我在“booking”表中插入值时,我需要在另一个表中插入一些值并更新第二个表中的字段

我的控制器

 public function booking(){
        $data = $_POST; 
        $check_seat = $this->Web_model->check_seat($data);
        if($check_seat>0){
            $result =  NULL;
        } else {
            $booking =$this->Web_model->booking_details($data);
            if($booking){
                $result =  $booking;
            } else {
                $result =  FALSE;
            }           
        }               
        print json_encode($result);
    }

我的模型

 public function booking_details( $data){
                   $booking = array();
                   $bid ='TKT'.strtotime(date('m/d/Y H:i:s'));
                   $occupied = 'Occupied';
                   $busNumber = $data['busNumber'];
                   $bookingDate = $data['bookingDate'];
                   $seatLabel = $data['seatLabel'];
                   $passengerName = $data['passengerName'];
                   $paymentStatus = $data['paymentStatus'];
                   $agentId = $data['agentId'];
                   $booking = array(
                'ticketNumber'=>$bid ,
                'busNumber'=>$busNumber,
                'seatLabel'=>$seatLabel ,
                'paymentStatus'=>$paymentStatus,
                'passengerName'=>$passengerName,
                'passengerPhone'=>$data['passangerPhone'],  
                'farePaid'=>$data['farePaid'],              
                'boarding'=>$data['anakopandia'],
                'dropping'=>$data['anakoshukia'],
                'bookingDate'=>$bookingDate,    
                'agentGroup'=>$data['agentGroup'],
                'agentId'=>$agentId,
                'agentName'=>$data['agentName'],
            );

            $this->db->insert('booking', $booking);
            $last_insert_id = $this->db->insert_id();

            $schedule = array(
                'ticketNumber'=>$bid ,                          
                'paymentStatus'=>$paymentStatus,
                'passengerName'=>$passengerName,                        
                'agentId'=>$agentId,

            );      

            $this->db->insert('schedule', $schedule);
            $this->db->where('bookingDate',$bookingDate);
            $this->db->where('busNumber',$busNumber);
            $this->db->where('seatLabel',$seatLabel);
            $seatStatus['seatStatus'] = $occupied;
                $this->db->update('schedule',$seatStatus);          

            $query = $this->db->get_where('booking',array('id' => $last_insert_id));
                return $query->row();
                }

检查座位

public function check_seat($data){  
        $this->db->where('seatLabel',$data['seatLabel']);
        return $query = $this->db->get('booking')->num_rows();  
                   }

从上面的代码中,当我插入值时,我收到一个 FALSE 结果,这意味着没有插入值,但我不知道问题出在哪里。

【问题讨论】:

  • 贴两张表的结构
  • 您的schedule 表是否有id 列?
  • @RayA 我已经发布了表格结构
  • @pradeep 我已经发布了表格结构
  • 我几乎可以保证查询失败,因为您不能有任何 NULL 列并且您丢失了一些数据。打开database.php中的db_debug进行确认。

标签: php mysql database codeigniter


【解决方案1】:

我会说问题在于schedule 表。您正在指定 4 列的值,而不是全部。

$schedule = array(
            'ticketNumber'=>$bid ,                          
            'paymentStatus'=>$paymentStatus,
            'passengerName'=>$passengerName,                        
            'agentId'=>$agentId,

        );      

        $this->db->insert('schedule', $schedule);

如果您查看schedule 表中的其他列,例如seatLabelseatStatus...等,它们没有阻止插入数据的默认值。所以解决方案我希望要么为其他列设置默认值,要么确保在插入类似这样的内容时填写所有数据:

$schedule = array(
        'ticketNumber'=>$bid ,                          
        'paymentStatus'=>$paymentStatus,
        'passengerName'=>$passengerName,                        
        'agentId'=>$agentId,
        'seatLabel' => '',
        'busNumber' => '',
        ...etc
    );      

    $this->db->insert('schedule', $schedule);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多