ich eine Variable in $ _POST haben, die wie folgt aussieht:Mit Verknüpfungstabelle mit doppelten IDs confusiont mit einer SQL-Abfrage in einem PHP foreach-Schleife verursacht
[genre_id] => Array
(
[0] => 1
[1] => 3
)
Ich habe einen Block von PHP-Code wie folgt aus:
Die Tabelle mit der Bezeichnung books_genres
ist eine Junction-Tabelle wegen einer Beziehung von vielen zu vielen. Dies bedeutet, dass einige der $book_id
dupliziert werden. Offensichtlich wird jede Zeile mit der angegebenen Nummer book_id
jedes Mal aktualisiert.
Sollte ich eine andere Spalte in meiner Tabelle books_genres haben? Selbst dann bin ich mir nicht sicher, wie ich diesen Index referenzieren würde? Oder sollte ich die Abfrage irgendwie anders schreiben?
Normalerweise aktualisieren Sie keine Junction-Tabelle. Sie würden die alten Werte entfernen und neue einfügen. Wenn Sie diese Art von Aktualisierung durchführen möchten, müssen Sie die "alte" genre_id als zusätzliches Prädikat in Ihre where-Klausel aufnehmen, damit sie weiß, welche genre_id Sie aktualisieren möchten. –
@sean_lange, also würde ich sowohl die Bücher und Genres Tabellen jeweils aktualisieren dann Code, der die Tabelle books_genres separat aktualisiert? Verstehe ich, was Sie sagen, ist mehr Standard? –
Nein. Der Punkt einer Junction-Tabelle ist, dass Sie nie etwas aktualisieren müssen. Es hat den Schlüssel von beiden Tabellen richtig? Der Schlüssel ändert sich nicht in Ihrer Tabelle, oder? Wenn Sie Ihre Strukturen nicht denormalisiert haben, müssen Sie die Junction-Tabellen nur in sehr seltenen Fällen aktualisieren. Wenn ein bestimmtes Buch als "klassisch" klassifiziert wurde und dann als "Horror" klassifiziert wird, würden Sie den klassischen Eintrag löschen und den Horror-Eintrag einfügen. Vielleicht würde die Veröffentlichung des ddl und einiger Beispieldaten dazu beitragen, dies zu erklären. –