在mysql列中插入删除值

时间:2016-03-29 19:57:40

标签: php mysql sql insert crud

MySQL的新手,我有用户表,用户在用户注册时保存数据。注册时需要1封电子邮件,但我希望他们能够在User表的邮件col中添加其他电子邮件。这可能吗?我试过了:

INSERT INTO users (email) VALUES ('email@fake.com') WHERE user_id = 1;

并发现INSERT不会尊重'WHERE'。首先,这是正确的方法吗?如果没有,如果用户选择,如何添加多个值并能够删除多个值中的一个?

2 个答案:

答案 0 :(得分:1)

首先,您的简单解决方案是使用CODEPEN

UPDATE `users` 
SET `email` = CONCAT(`email`, ',', 'new_email@mail.com') 
WHERE id = 1

但是!当您的用户想要delete电子邮件时,问题就出现了。 您必须展开当前的email字符串,从中删除值,然后执行以下更新:

UPDATE `users` 
SET `email` = 'string of emails' 
WHERE id = 1

这就是为什么存储email应该在单独的字段中,例如email1email2如果您有2封电子邮件

如果您允许用户收到大量电子邮件 - 那么您应该添加一个名为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'

答案 1 :(得分:0)

Mysql是一种关系数据库语言,因此可以促进相关表格的相关时间。正如@Fabio评论的那样,您最简单的方法是使用另一个电子邮件地址表,并将email列替换为users列,其中userEmailId列允许您关联此行中的多行通过让email中的每一行都包含此user和实际的电子邮件数据,email表返回此userEmailId

添加表格是最简单的方法,我能想到实现此目的的另一种方法是向user添加更多列以添加其他电子邮件。然后,您可以通过更新空电子邮件列,在要添加电子邮件的update上使用user

第三种方法可能会根据您使用这些查询的方式而有效,如果它是较大的php,节点或类似应用程序的一部分,则可以将新电子邮件附加到当前通过电子邮件将两者分开,并将其与电子邮件中不允许的某种字符分开,空格字符可以是一个简单的例子。在您的服务器语言中,您可以将此字符串分成单独的电子邮件。使用update可以实现此目的,但在添加新电子邮件时,您必须使用子查询来在email字段中携带当前数据。