2013-04-03 5 views
0

I ont créé une table avec:mise à jour ou insérer des valeurs

$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; 
'); 

Et je suis en train lorsque l'utilisateur se connecte à insérer ou mettre à jour si le doesnt ligne existe une valeur de 1 ou 0 si l'utilisateur a ouvert une session en dehors.

connexion

@mysql_query ("REPLACE INTO " . DB_PREFIX . "ct_forum_settings (admin_online) VALUES(1) ON DUPLICATE KEY UPDATE admin_online='1'"); 

fermeture de session

@mysql_query ("REPLACE INTO " . DB_PREFIX . "ct_forum_settings (admin_online) VALUES(0) ON DUPLICATE KEY UPDATE admin_online='0'"); 

Mon seul problème est que j'ai essayé insérer dans et remplacer dans, mais ils continuent juste à créer des lignes de 1 et de 0 i seulement besoin de mettre à jour la ligne si ça n'existe pas.

Des idées s'il vous plaît?

Répondre

1

Pour REPLACE ou pour ON DUPLICATE UPDATE vous devez donner à votre table une clé unique (généralement la clé primaire est ce dont vous avez besoin).
Une fois que u ont cela, et u utiliser la même valeur pour l'utilisateur (par exemple, appeler le champ id et faire auto increment), il travaillera

$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; 
'); 

si u ne comporte qu'un seul, pas besoin de autoincrement , mais alors vous devrez définir manuellement l'id.

+0

Cela a fonctionné, mais j'ai dû enlever AUTO_INCREMENT. Thanx –

+0

oui, si vous avez une seule entrée, pas besoin d'auto-incrément –

0

vous pouvez essayer de changer REPLACE INTO

pour insérer:

mysql_query("INSERT INTO `table` (`id`, `file_name`, `directory`) VALUES (NULL, '$filename', '$directory')"); 

pour updateing:

mysql_query("UPDATE `table` SET `file_name` = '$filename', `directory` = '$directory' WHERE `id` = id") 
Questions connexes