2012-08-29 14 views
5

Mögliche Duplizieren:
How to 'insert if not exists' in MySQL?Insert eindeutige Werte von PHP-Array in SQL-Tabelle

Es gibt SQL-Tabelle:

CREATE TABLE IF NOT EXISTS `MyTable` (
    `id` smallint(6) NOT NULL AUTO_INCREMENT, 
    `MyVar` varchar(40) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) 

Und es gibt zwei PHP Arrays arr1[]=array("abc","bcd") und arr2[]=array("abc","cde").

Nehmen wir an, ich habe arr1 [] Werte in SQL-Tabelle gespeichert. Nehmen wir an, ich muss arr2 [] Werte in der gleichen SQL Tabelle speichern. Welche SQL INSERT-Abfrage muss ich schreiben, um das doppelte Speichern des "abc" -Eintrags zu vermeiden? Das Ergebnis muss sein:

MyTable: 
1 | abc 
2 | bcd 
3 | cde 

aber NICHT:

MyTable: 
1 | abc 
2 | bcd 
3 | abc 
4 | cde 

UPDATE: Vielleicht sollte die MyTable so erstellt/definiert werden, die doppelte Einträge ignoriert werden?

+0

Legen Sie eine eindeutige Einschränkung für Ihre MyVar-Spalte fest. Es wird also nicht funktionieren, einen bereits vorhandenen Wert einzufügen. – TRD

+0

http://stackoverflow.com/questions/548541/insert-ignore-vs-insert-on-duplicate-key-update – matino

+0

'INSERT IGNORE' + Rest der Abfrage –

Antwort

1

Machen Sie die MyVar als UNIQUE in Ihrer Tabelle.

So:

CREATE TABLE IF NOT EXISTS `MyTable` (
    `id` smallint(6) NOT NULL AUTO_INCREMENT, 
    `MyVar` varchar(40) DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE INDEX `myvaridx` (`MyVar`) 
); 

oder, wenn Sie nicht in der Lage sind, die Tabelle zu erstellen, verändern es

ALTER TABLE `request` 
ADD UNIQUE INDEX `myvaridx` (`MyVar`) 
6

Es gibt 3 mögliche Lösungen: mit INSERT IGNORE, REPLACE oder INSERT ... ON DUPLICATE KEY UPDATE. Überprüfen Sie diese article.

Sie können auch im Speicher intersect array-s und dann nur eindeutige Werte einfügen, wenn diese Lösung für Sie passt.

0

Verwendung von SQL für eine solche Aufgabe verschwenderisch wäre verwenden.

Ich empfehle die Verwendung der "array_merge" -Funktion, um die Arrays zusammenzuführen und dann "array_unique" -Funktion, um die Duplizierung zu behandeln.

Fügen Sie dann die eindeutigen Werte in die Datenbank ein.

Verwandte Themen