0

我创建了一个表:

$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 的行,如果它不存在,我只需要更新该行。

请问有什么想法吗?

4

2 回答 2

1

ForREPLACE或 forON 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。

于 2013-04-03T11:57:05.567 回答
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")
于 2013-04-03T11:58:35.347 回答