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:
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!