自定义模型更新和插入一体


custom model update and insert all in one

当我插入/更新一行时,我希望能够检查查询更新是否会插入

我不确定如何使它在我的($this->db->query())上,如果行存在(website_id),那么它将是一个更新,否则将插入。

我使用变量和foreach。Insert工作正常,但无法使更新生效。目前,每次更新都会创建一个新行。如果insert将创建新行,那么我如何使其同时使用这两种方法?否则,更新属于website_id 的行

public function editSetting($group, $data, $website_id = 0) {
    foreach ($data as $key => $value) {
    if (substr($key, 0, strlen($group)) == $group) {
            // Insert To Database Only
        if (!is_array($value)) {
            $this->db->query("INSERT INTO " . $this->db->dbprefix . "setting SET 
            website_id = '" . (int)$website_id . "', `group` = " . $this->db->escape($group) .", 
            `key` = " . $this->db->escape($key) . ", 
            `value` = " . $this->db->escape($value) . " 
          ");
        }
    }
}

如果您使用mysql作为DB引擎,您可以使用:

INSERT INTO tablename (vars) VALUES (values)
ON DUPLICATE KEY UPDATE var1=value1, var2=value2;

请参阅http://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html详细信息。