MySQL 新手,我有一个用户表,用于在用户注册时保存数据。注册时需要 1 封电子邮件,但我希望他们能够将其他电子邮件添加到用户表的邮件栏。这可能吗?我尝试过:
INSERT INTO users (email) VALUES ('email@fake.com') WHERE user_id = 1;
并发现 INSERT 不会尊重“WHERE”。首先,这是否是正确的方法?如果不是,如何添加多个值并能够在用户选择之后删除多个值之一?
最佳答案
首先,您的简单解决方案是使用 CONCAT
UPDATE `users`
SET `email` = CONCAT(`email`, ',', 'new_email@mail.com')
WHERE id = 1
但是!当您的用户想要删除
电子邮件时,问题就来了。
您必须分解当前的 email
字符串,从中删除值,然后进行如下更新:
UPDATE `users`
SET `email` = 'string of emails'
WHERE id = 1
这就是为什么存储电子邮件
应该存储在单独的字段中,例如email1
、email2
(如果您只有<).
如果您允许用户拥有大量电子邮件 - 那么您应该添加一个名为 user_emails
的新表,例如,其方案如下:
user_id | email
然后选择电子邮件就会变成这样:
SELECT `email` FROM `user_emails` WHERE `user_id` = 1
添加电子邮件只是另一个插入:
INSERT INTO `user_emails` VALUES (1, 'new_email')
删除的是:
DELETE FROM `user_emails` WHERE id = 1 AND email = 'new_email'
关于php - 在mysql列中插入和删除值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36293984/