我正在尝试更新我的数据库中的电子邮件字段...当我们的一位教师通过我们的系统发送邀请时,邀请的电子邮件会记录在我们的数据库中。
我希望老师能够发送电子邮件,然后如果他们忘记某人他们可以发送另一个邀请,然后数据库字段将保存例如两封电子邮件(原始邮件,然后是添加的邮件)。
以下是我将电子邮件存储在数据库中的代码...
$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;
像CHARM一样工作! ;-)并感谢所有的答案!
答案 0 :(得分:2)
尝试使用INSERT ... ON DUPLICATE KEY UPDATE
如果指定ON DUPLICATE KEY UPDATE,并且插入的行将导致UNIQUE索引或PRIMARY KEY中出现重复值,则MySQL将执行旧行的UPDATE。
例如,如果列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,如果行作为新行插入,则每行的受影响行值为1;如果更新现有行,则每行受影响的行值为2。
希望这会有所帮助。