我创建了一个表格:
$this->db->query('CREATE TABLE IF NOT EXISTS `'.DB_PREFIX.'ct_forum_settings` (
`admin_online` int(1) NOT NULL default \'0\'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
');
我正在尝试当用户登录插入或更新时,如果用户已注销,则该行不存在值1或0。
登录
@mysql_query ("REPLACE INTO " . DB_PREFIX . "ct_forum_settings (admin_online) VALUES(1) ON DUPLICATE KEY UPDATE admin_online='1'");
注销
@mysql_query ("REPLACE INTO " . DB_PREFIX . "ct_forum_settings (admin_online) VALUES(0) ON DUPLICATE KEY UPDATE admin_online='0'");
我唯一的问题是我尝试插入并替换为但是他们只是继续创建1和0的行我只需要更新行,如果它不存在。
有什么想法吗?
答案 0 :(得分:1)
对于REPLACE
或ON DUPLICATE UPDATE
,您需要为表格提供一个唯一的密钥(通常主键是您需要的)。
一旦你有了这个,你将为用户使用相同的值(比如,调用字段id
并使其成为auto increment
)它将起作用
$this->db->query('CREATE TABLE IF NOT EXISTS `'.DB_PREFIX.'ct_forum_settings` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`admin_online` int(1) NOT NULL default \'0\'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
');
如果你只有一个条目,不需要自动增量,但是你必须手动设置id。
答案 1 :(得分:0)
您可以尝试更改REPLACE INTO
用于插入:
mysql_query("INSERT INTO `table` (`id`, `file_name`, `directory`) VALUES (NULL, '$filename', '$directory')");
用于更新:
mysql_query("UPDATE `table` SET `file_name` = '$filename', `directory` = '$directory' WHERE `id` = id")