Php 关于使用字符串复制值CONCAT值

Php 关于使用字符串复制值CONCAT值,php,mysql,concat,Php,Mysql,Concat,英语不是我的母语,这对我来说很难解释,所以我要为糟糕的语法和/或打字错误提前道歉 我有一个mysql表,如图所示 +-----------------------+---------+---------------+---------------+------+ | sus_key | sus_nom | sus_mail | sus_id | etc..+ +-----------------------+---------+--------

英语不是我的母语,这对我来说很难解释,所以我要为糟糕的语法和/或打字错误提前道歉

我有一个mysql表,如图所示

+-----------------------+---------+---------------+---------------+------+
|        sus_key        | sus_nom |   sus_mail    |    sus_id     | etc..+
+-----------------------+---------+---------------+---------------+------+
|   int auto_increment  | String  | String UNIQUE |    String     | etc..+
+-----------------------+---------+---------------+---------------+------+
我使用此表保存新闻稿的订户,并使用“sus_id”标识用户订阅的表单,例如:

user1 subscribe from form of page1 the "sus_id" will be "form1"
user2 subsribe from form of page2 the "sus_id" will be "form2"
如果用户使用php中的“on replicate KEY UPDATE”mysql_query以任何形式插入相同的电子邮件,则用户可以自由更改其姓名和其他数据:

$conn = new mysqli($servername, $username, $password, $dbname);
$sql = "INSERT INTO correos (sus_nom, sus_mail, sus_id, sus_tel)    VALUES ('".$name ."', '".$email ."', 'form#', '".$tel ."') ON DUPLICATE KEY UPDATE sus_nom = ('".$name."'), sus_tel = ('".$tel."'), sus_id = ('form#');";
$conn->query($sql);
我想要的是,如果一个现有用户使用CONCAT从另一个表单更新现有id\u fom的值,其中用户使用用户实际使用的id\u表单进行订阅:

user1 suscribe in form 1 -> sus_id = "form1"
user1 update in form 2 -> sus_id = "form1form2"
抱歉,如果这是两个问题,但是: 如何在“重复密钥更新”状态下使用CONCAT?
考虑到用户可能会订阅同一表单两次,如何检查值susu_id是否已经具有当前表单id字符串,以便值不会重复?(如果sus_id有“form1form2”并且用户从form1更新时什么都不做)

通常在一列中放置多个值是一个坏主意,这会使搜索值变得昂贵,因为它们无法被索引,从这个问题可以看出,这会使更新列变得困难。但如果你必须这样做:

ON DUPLICATE KEY UPDATE 
    sus_nom = VALUES(sus_num), 
    sus_tel = VALUES(sus_tel), 
    sus_id = IF(LOCATE(VALUES(sus_id), sus_id), sus_id, CONCAT(sus_id, VALUES(sus_id)))
LOCATE
测试
sus\u id
的新值是否已在
sus\u id
列中。如果是,它将
sus\u id
设置回自身,否则它将连接新的
sus\u id

顺便说一句,请注意,您可以在
ON DUPLICATE KEY UPDATE
子句中使用
VALUES(colname)
来引用本应插入到该列中的值,而不是再次连接字符串。

我想您的意思是IF(LOCATE(VALUES(sus_id),sus_id)…对吗?