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!