Heim  >  Artikel  >  Backend-Entwicklung  >  Lösen Sie das Problem des Einfügens derselben Daten in Thinkphp3.2 perfekt

Lösen Sie das Problem des Einfügens derselben Daten in Thinkphp3.2 perfekt

不言
不言Original
2018-06-07 11:13:552448Durchsuche

Der folgende Artikel bietet Ihnen eine perfekte Lösung für das Problem des Einfügens derselben Daten in Thinkphp3.2. Der Inhalt ist recht gut, daher werde ich ihn jetzt mit Ihnen teilen und als Referenz verwenden.

Problembeschreibung

Beim Einfügen von Daten mit TP3.2 heute, um das Einfügen derselben Daten (der sogenannten „Same Data“) zu vermeiden , sein Der Primärschlüssel ist derselbe oder die Felder des eindeutigen Index sind gleich). Kann dupliziert werden: UID, Jahr, Monat, Tag. Wenn die drei Felder gleich aussehen, wird der aktuelle Datensatz aktualisiert.

Problemlösung

Als wir zuvor mit einem solchen Problem konfrontiert waren, wissen Sie, MySQL bietet ON DUPLICATE KEY UPDATE oder REPLACE INTO, um dieses Problem zu lösen.

Verwenden Sie ON DUPLICATE KEY UPDATE

Vor dem Einfügen von Daten gibt es nur einen Datensatz in der Tabelle, wie unten gezeigt

Die SQL-Anweisung lautet wie folgt: Wenn beim Einfügen eines Datensatzes dieser mit dem vorhandenen Datensatz in der Tabelle übereinstimmt, aktualisieren Sie den Datensatz, andernfalls fügen Sie den Datensatz ein.

INSERT INTO `work_log` (
`uid`,
`year`,
`mounth`,
`day`,
`status`
) 
VALUES
(1, 2016, 6, 3, 1) 
ON DUPLICATE KEY 
UPDATE 
`status` = 
VALUES
(`status`),
`updated_ts` = NOW();

Verwenden Sie REPLACE INTO

Der Code lautet wie folgt:

Führen Sie zuerst den folgenden Code aus, um ein Datenelement einzufügen

REPLACE INTO `work_log` (
`uid`,
`year`,
`mounth`,
`day`,
`status`
) 
VALUES
(1, 2016, 6, 2, 1)

Der Effekt ist wie unten gezeigt

Führen Sie den folgenden Code erneut aus. Der oben eingefügte Code wird aktualisiert

REPLACE INTO `work_log` (
`uid`,
`year`,
`mounth`,
`day`,
`status`
) 
VALUES
(1, 2016, 6, 2, 5)

Der Effekt ist wie unten gezeigt

ON DUPLICATE KEY UPDATE und REPLACE INTO Differenz

Wenn derselbe Wert angezeigt wird, aktualisiert ON DUPLICATE KEY UPDATE den vorhandenen Datensatz und REPLACE INTO löscht den vorherigen Datensatz und fügt dann einen neuen ein aufzeichnen.

Lösung in Thinkphp3.2

In Thinkphp3.2 wird das Einfügen auf die gleiche Weise über den dritten Parameter der Funktion add() gehandhabt Datenprobleme.

Die add()-Methode in Model.class.PHP ruft die insert-Methode in Db.class.php auf. In der insert-Methode können wir den folgenden Code sehen:

Wobei $replace zufällig der dritte Parameter in der Add-Methode ist.

Verwandte Empfehlungen:

denken Sie an das Hinzufügen, Löschen, Ändern und Überprüfen des Implementierungscodes der PHP3.2.3-Versionsdatenbank

Das obige ist der detaillierte Inhalt vonLösen Sie das Problem des Einfügens derselben Daten in Thinkphp3.2 perfekt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP-Popup-DialogNächster Artikel:PHP-Popup-Dialog