Heim >Backend-Entwicklung >PHP-Tutorial >Lösung zum Einfügen derselben Daten in Thinkphp3.2

Lösung zum Einfügen derselben Daten in Thinkphp3.2

巴扎黑
巴扎黑Original
2018-05-22 15:55:511578Durchsuche

Der folgende Editor bringt Ihnen einen Artikel, der das Problem des Einfügens derselben Daten in Thinkphp3.2 perfekt löst. Der Herausgeber findet es ziemlich gut, deshalb teile ich es jetzt mit Ihnen und gebe es als Referenz. Folgen wir dem Editor und werfen wir einen Blick darauf.

Problembeschreibung

Beim Einfügen von Daten mit TP3.2 heute, um das Einfügen zu vermeiden gleiche Daten (die sogenannten gleichen Daten haben den gleichen Primärschlüssel oder das gleiche eindeutige Indexfeld), der von mir erstellte Index ist wie unten gezeigt, der Primärschlüsselindex ist ein Feld mit automatischer Inkrementierung, und eine Duplizierung ist nicht möglich , kann der eindeutige Index dupliziert werden, wenn die drei Felder UID, Jahr, Monat und Tag gleich sind, 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, wird der neue Datensatz aktualisiert, andernfalls wird der Datensatz eingefügt.

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 zunächst 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 folgt

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 folgt

Der Unterschied zwischen ON DUPLICATE KEY UPDATE und REPLACE INTO

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

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.

Das obige ist der detaillierte Inhalt vonLösung zum Einfügen derselben Daten in Thinkphp3.2. 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