当我插入/更新一行时,我希望能够检查查询更新是否会插入
我不确定如何使它在我的($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详细信息。