使用'on duplicate key'添加值

时间:2011-11-30 22:04:44

标签: mysql insert on-duplicate-key

我有一个名为$ words

的下列数组
Array
(
[0] => Array
    (
        [token] => dwA
        [pos] => *DII.7,8*
    )

[1] => Array
    (
        [token] => nTr
        [pos] => *DI.5,9*
    )

[2] => Array
    (
        [token] => dwA
        [pos] => *DI.2,8*
    )

[3] => Array
    (
        [token] => nTr
        [pos] => *DI.2,8*
    ))

我想插入以下内容:

foreach ($words as $value)
    {
    $word = $value['token'];
    $attestation = $value['pos'];
    $insert="INSERT INTO Examples (Word, Attestation) VALUES ('$word', '$attestation')

    mysql_query($insert) OR die(mysql_error());
    }

表'Examples'有一个名为ID的键,自动增加; 字段词是'unique'

我想要的是,在“证明”字段中,每次“单词”相同时都会添加值

所以结果如下:

Id    word        Attestation
1     dwA         *DII.7,8*, *DI.2,8*
2     nTr         *DI.5,9*, *DI.2,8*

所以我尝试添加'on duplicate key'短语

 foreach ($words as $value)
    {
    $word = $value['token'];
    $attestation = $value['pos'];
    $insert="INSERT INTO Words2 (Word, Attestation) VALUES ('$word', '$attestation')
          on duplicate key update Attestation = 
 ";
    mysql_query($insert) OR die(mysql_error());
    }

但我无法弄清楚在Attestation =之后我必须添加什么,以便不同的证明一个接一个地添加,例如: DI.5,9 DI.2,8 或者'重复键'不是正确的方法吗?

1 个答案:

答案 0 :(得分:1)

试试这个;

  

INSERT INTO Words2(Word,Attestation)VALUES('$ word','$ attestation')             重复密钥更新证明= CONCAT(证明,',','$证明')

尽管如此,稍后将这些值分开可能有点困难。您可能需要考虑另一个表,以便建立一对多的关系。