根据w3resource ,您可以使用REPLACE关键字替换文本。
现在看看从OpenCart提取的这段代码
<?php
class ModelToolOnline extends Model {
public function addOnline($ip, $customer_id, $url, $referer) {
$this->db->query("DELETE FROM `" . DB_PREFIX . "customer_online` WHERE date_added < '" . date('Y-m-d H:i:s', strtotime('-1 hour')) . "'");
$this->db->query("REPLACE INTO `" . DB_PREFIX . "customer_online` SET `ip` = '" . $this->db->escape($ip) . "', `customer_id` = '" . (int)$customer_id . "', `url` = '" . $this->db->escape($url) . "', `referer` = '" . $this->db->escape($referer) . "', `date_added` = '" . $this->db->escape(date('Y-m-d H:i:s')) . "'");
}
}
?>
它们具有用SET关键字替换查询,并且没有WHERE条件。现在,在任何地方都找不到类似的东西来了解此查询中发生的事情。
如果有人知道此查询中发生了什么,请使用真实的源链接进行解释
答案 0 :(得分:1)
那是两件事。有一个REPLACE() function和一个REPLACE statement。
在代码中使用REPLACE语句。它类似于INSERT语句,因此没有WHERE子句。
这是文献所述的内容:
REPLACE
的工作原理与INSERT
完全相同,不同之处在于,如果 表具有与PRIMARY KEY
或UNIQUE
的新行相同的值 索引,则在插入新行之前删除旧行。