gpt4 book ai didi

php - 添加到数据库字段而不是覆盖它(MySQL UPDATE 函数)

转载 作者:可可西里 更新时间:2023-11-01 08:26:21 24 4
gpt4 key购买 nike

我正在尝试更新我的数据库中的电子邮件字段...当我们的一位老师通过我们的系统发送邀请时,被邀请的电子邮件记录在我们的数据库中。

我希望老师能够发送电子邮件,然后如果他们忘记了某人,他们可以发送另一封邀请,然后数据库字段将保存例如两封电子邮件(原始电子邮件和添加的电子邮件)。

enter image description here

这是我必须将电子邮件存储在数据库中的代码...

$recipientemail = $_POST['recipientemail'];

// Stores the (instance) in the instance database
include_once("$_SERVER[DOCUMENT_ROOT]/classes/includes/dbconnect.php");
$sql = ("UPDATE `database1`.`instances` SET `invitemail` = '{$recipientemail}' WHERE `instances`.`instance` = '{$instance}';");
$query = mysqli_query($dbConnect, $sql)or die(mysql_error());

每当我邀请新人时,此代码都会覆盖最初邀请的电子邮件...非常感谢您的考虑!

更新

解决方案采用 MySQL“concat()”函数的形式。我应该更清楚一点,我不是使用数值而是使用字符串(电子邮件地址)。因此,如果我们查看以下答案中的示例:

UPDATE table SET c=c+1 WHERE a=1;

它在数学上添加了 c 和 1,我想将电子邮件添加到我的数据库中,甚至用逗号分隔,所以我只是这样做了......

UPDATE table SET c = concat(c, ',', 'new@email.com') WHERE a=1;

工作起来很有魅力! ;-) 并感谢您的所有回答!

最佳答案

尝试使用INSERT ... ON DUPLICATE KEY UPDATE

如果您指定 ON DUPLICATE KEY UPDATE,并且插入的行会导致 UNIQUE 索引或 PRIMARY KEY 中出现重复值,则 MySQL 将对旧行执行更新。

例如,如果列 a 声明为 UNIQUE 并包含值 1,则以下两个语句具有类似的效果:

INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;

UPDATE table SET c=c+1 WHERE a=1;

(对于 a 是自动增量列的表,效果并不相同。对于自动增量列,INSERT 语句会增加自动增量值,但 UPDATE 没有。)

ON DUPLICATE KEY UPDATE 子句可以包含多个列分配,以逗号分隔。

对于 ON DUPLICATE KEY UPDATE,如果该行作为新行插入,则每行的 affected-rows 值为 1,如果更新现有行,则为 2。

希望这会有所帮助。

关于php - 添加到数据库字段而不是覆盖它(MySQL UPDATE 函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35223907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com