Kann in eine Tabelle nichts einfügen wegen Foreign Key (MySQL & PHP)?

2 Antworten

Prüfe doch erst einmal, was der Constraint fordert. Möglicherweise existiert die user_id, die du versuchst, einzufügen, noch gar nicht in der Tabelle, auf die der Fremdschlüssel zeigt, o.ä..


Snickers250 
Beitragsersteller
 23.04.2021, 22:24

der existiert

0
regex9  23.04.2021, 22:24
@Snickers250

Das war ein Beispiel für eine mögliche Ursache. Was der Constraint nun genau fordert, musst du schauen. Ich werde nicht raten.

1
Snickers250 
Beitragsersteller
 23.04.2021, 22:31
@regex9

ich verstehe auch nicht wie ich das anstellen überhaupt anstellen soll. ich versuche als admin eine ankündigung an user zu machen. ich habe zwei tabellen: users und announcements. wie kann ich es machen, dass wenn der admin eine ankündigung macht, dass bei der spalte user_id in der tabelle announcements die id des users von der tabelle users gespeichert wird? ich habe den foreign key schon eingestellt, aber weiß nicht wie ich daten in announcements einfügen kann und wie ich die id des users beziehe.

0
Snickers250 
Beitragsersteller
 23.04.2021, 22:38
@regex9

ich weiß wie ich daten einfüge, aber nicht wie man die id von users in user_id von announcement speichert

0
regex9  23.04.2021, 22:43
@Snickers250

Die Reihenfolge ist normalerweise einfach nur:

Wenn die Tabelle, auf die der FS verweist, noch keinen eindeutigen Datensatz beinhaltet, der auf den FS passt, muss dieser angelegt werden. Eindeutig bedeutet konkret: Die Kombination, an Spalten, aus der sich der FS zusammensetzt, darf in der Tabelle nur einmal vorkommen.

Der nächste Schritt gestaltet sich so wie bei normalen INSERT/UPDATE-Queries. Für die Spalte mit dem Fremdschlüssel gibst du auch einfach nur den Wert ein, auf den der Fremdschlüssel in der Datenbank ebenso verweisen sollte.

0
regex9  23.04.2021, 22:50
@Snickers250

EIn sicherer Weg, den du einschlagen könntest, wäre ein zusätzlicher SQL-Query, der erst einmal prüft, ob der FS-Wert, den du eintragen lassen möchtest, in der entsprechenden Tabelle existiert.

Prepared Statement:

select from users where user_id=?

Wenn das Ergebnis einen Wert liefert, kannst du den aus dem mysqli_result auslesen und in deinen INSERT-Query eintragen.

Wenn es keine Datensätze im mysqli_result gibt, muss erst der entsprechende Datensatz in der users-Tabelle angelegt werden.

Was bei der Aktion ebenso am besten beachtet werden sollte: Das du überall, wo du mit den Daten arbeitest, dieselbe Zeichenkodierung verwendest.

0

naja , du musst die ID halt in der user tabelle haben .

Du kannst nicht bei FREMDKeys NULL oder so eingeben . Du musst schon einen User haben .


Snickers250 
Beitragsersteller
 23.04.2021, 22:23

ich habe einen user, was meinst du?

0
TechPech1984  24.04.2021, 14:12
@Snickers250

How do you fix Cannot add or update a child row a foreign key constraint fails?

The FOREIGN KEY clause is specified in the child table. ... Cannot add or update a child row: a foreign key constraint fails essentially means that, you are trying to add a row to your Ordrelinje table for which no matching row (OrderID) is present in Ordre table. You must first insert the row to your Ordre table.

zeig deine tabellen struktur und daten und wir können dir sagen was du wo wie falsch machst.

0