php - 在mysql列中插入和删除值

标签 php mysql sql insert crud

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

这就是为什么存储电子邮件应该存储在单独的字段中,例如email1email2(如果您只有<).

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

相关文章:

sql - 在 SQL Server 2008 中插入/更新大量数据的最佳实践

MySQL查询来自2张表的困惑

php - 为什么我在这里得到 "Query was empty"?

javascript - 警报来自 jquery post 的 ID

php - Laravel 5 - 存储在数据库中

mysql - 这个简单的 MySQL CREATE TABLE 语句有什么问题?

php - 在搜索其中一个元素时合并表格

php - Yii GridView 显示来自两个模型的数据

mysql - 如何在sql更新查询中忽略双引号以更改列值(值为XML)

php - 如何在 Laravel Excel maatwebsite 上导入时获取真实数字?