【问题标题】:Conditional Insert using codeigniter使用 codeigniter 进行条件插入
【发布时间】:2016-01-25 14:09:01
【问题描述】:

如果不存在,我想在表中插入行,否则更新它。 如何在 codeignitor 中改写这个查询?

INSERT INTO fa_seat_details (mall_id, cineplex_name, audi_number, number_of_rows, number_of_columns) VALUES(15, "PVR", 1, 18, 16) ON DUPLICATE KEY UPDATE cineplex_name = "some name", number_of_rows=10, number_of_columns=20;

这是表结构,

+-------------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | mall_id | int(11) | NO | MUL | NULL | | | cineplex_name | varchar(64) | NO | | NULL | | | audi_number | int(11) | NO | | NULL | | | number_of_rows | int(11) | NO | | NULL | | | number_of_columns | int(11) | NO | | NULL | | +-------------------+-------------+------+-----+---------+----------------+

【问题讨论】:

  • 可能与stackoverflow.com/questions/3361490/… 和许多这样的重复
  • 要检查的任何唯一字段??
  • mall_id 和 audi_number 的组合在这个表中是唯一的
  • 感谢 siddhesh 提供该链接,我可能在搜索结果中错过了该链接

标签: mysql codeigniter


【解决方案1】:

试试这个

public function FunctionName($value)//pass data to here
{
    $query = $this->db->query("SELECT * FROM category WHERE aa = 'bbbbb'");
    $result = $query->result_array();
    $count  = count($result);

    if (empty($count)) {

        # insert code
        $data = array(
           'title' => 'My title' ,
           'name' => 'My Name' ,
           'date' => 'My date'
        );

        $this->db->insert('mytable', $data); 
    }
    elseif ($count >1 ) {
        # Having Multiple data on it
        echo "Wrong data selected";
    }
    else{

        #update code
        $data = array(
           'title' => $title,
           'name' => $name,
           'date' => $date
        );

        $this->db->where('id', $id);
        $this->db->update('mytable', $data); 
    }
}

【讨论】:

    【解决方案2】:

    也许你想要这样的东西:

    $data['mall_id'] = 15;
    $data['cineplex_name'] = "PVR";
    $data['audi_number'] = 1;
    $data['number_of_rows'] = 18;
    $data['number_of_columns'] = 16;
    
    $sql = $this->db->insert_string('fa_seat_details', $data) . ' ON DUPLICATE KEY UPDATE cineplex_name = "some name", number_of_rows=10, number_of_columns=20';
    $this->db->query($sql);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-14
      • 2016-05-06
      • 2020-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-26
      相关资源
      最近更新 更多