0

$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 というキーがあります。フィールドワードは「ユニーク」です

私が欲しいのは、フィールド「認証」で、「単語」が同じになるたびに値が追加されることです

したがって、結果は次のようになります。

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

だから私は「重複キーに」フレーズを追加しようとしました

 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,9DI.2,8 または「重複キー」ですこれを行う正しい方法ではありませんか?

4

1 に答える 1

1

これを試して;

INSERT INTO Words2 (Word, Attestation) VALUES ('$word', '$attestation') on duplicate key update Attestation = CONCAT(Attestation, ', ', '$attestation')

ただし、後でこれらの値を分解するのは少し難しいかもしれません。1 対多の関係を設定できるように、別のテーブルを検討することもできます。

于 2011-11-30T22:34:47.053 に答える