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

テーブルに一意のキーREPLACEON 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;
'); 

エントリが 1 つしかない場合、自動インクリメントは必要ありませんが、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 に答える