【问题标题】:if query is not update如果查询未更新
【发布时间】:2014-11-18 18:12:09
【问题描述】:

我想知道将我的查询变成 if 语句的最佳方法。因为我想为我的 codeigniter 编辑主函数使用一个函数,

所以它结合了两个查询,如果查询不是更新,那么插入方式是最好的方式

public function addUserGroup($data) {
    $this->db->query("INSERT INTO " . $this->db->dbprefix . "user_group SET 
    name = " . $this->db->escape($data['name']) . ", 
    permission = " . (isset($data['permission']) ? $this->db->escape(serialize($data['permission'])) : '') . " ");
}

public function editUserGroup($user_group_id, $data) {
    $this->db->query("UPDATE " . $this->db->dbprefix . "user_group SET 
    name = " . $this->db->escape($data['name']) . ", 
    permission = " . (isset($data['permission']) ? $this->db->escape(serialize($data['permission'])) : '') . " WHERE user_group_id = '" . (int)$user_group_id . "'");
}

【问题讨论】:

标签: php codeigniter


【解决方案1】:

您可以使用“user_group_id”设置 if/else 条件。我认为这一定来自 $this->input->post('user_group_id') 这样的帖子数组。

因此您可以创建一个函数来检查这些条件,如下所示:

function my_function(){
   if($this->input->post('user_group_id')){
    // call update query
   }else{
    // call insert query
   }
}

【讨论】:

    【解决方案2】:

    尝试将值保存在变量中并将 var 传递给查询并尝试为查询变量添加正确的引用

    public function addUserGroup($data) {
      $perm = (isset($data['permission']) ? $this->db->escape(serialize($data['permission'])) : '');
      $this->db->query("INSERT INTO " . $this->db->dbprefix . "user_group SET name = '" . $this->db->escape($data['name']) . "', permission = '" .$perm. "' ");
    

    }

    【讨论】:

      【解决方案3】:

      你可以用一个非常简洁的查询来做到这一点:

      "INSERT INTO " . $this->db->dbprefix . "user_group SET name = " . 
      $this->db->escape($data['name']) . ", 
      permission = " . (isset($data['permission']) ? $this->db->escape(serialize($data['permission'])) : '') . 
      " ON DUPLICATE KEY UPDATE ". 
      $this->db->dbprefix . "user_group SET name = " . 
      $this->db->escape($data['name']) . ", 
      permission = " . (isset($data['permission']) ? $this->db->escape(serialize($data['permission'])) : '') . " 
      WHERE user_group_id = '" . (int)$user_group_id . "'");
      

      唯一需要的是表上的主键

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-04
        • 1970-01-01
        • 2018-06-04
        • 2014-05-05
        • 1970-01-01
        • 2013-01-19
        • 1970-01-01
        • 2021-02-15
        相关资源
        最近更新 更多