Mehrere Tabellen auf einmal mit Daten füllen

cmc-one

Mitglied
Servus



Habe mal ein etwas komplizierteres Problem.

Ich habe ein Formular. Nach abschicken dieses werden die Daten daraus in mind. 2 Tabellen eingetragen – also in eine Tabelle A und eine Tabelle B. Diese beiden Tabellen sind mit 1:n miteinander verbunden. Jetzt sollen die Daten über INSERT in die Tabellen geschrieben werden. Doch dort ist das Problem.

Ich habe die Eingabe für Tabelle A so vorgenommen:

PHP:
 $eingeben = "INSERT INTO Tabelle A
 
					 SET …;";		 
 
$eingeben = mysql_query($eingeben);



Und für Tabelle B:


PHP:
 $einfuegen = "INSERT INTO Tabelle B
 
					 SET …;";		 
 
$einfuegen = mysql_query($einfuegen);


Dies geht leider nicht. Er fügt zwar alles in Tabelle A ein, aber nix in die Tabelle B



Auch wenn ich versuche beide Tabellen mit einer INSERT Eingabe zu schreiben geht es nicht (er schreib gar nix in die Tabellen)



Ausserdem gibt es noch das Problem, dass durch das neue Anlegen der Daten in Tabelle A auch eine A_id generiert wird, welche automatisch mit in die Tabelle B geschrieben werden muss.



Hat irgendjemand ne Idee wie ich das machen kann
 
Wenn Du die ID brauchst Du die Daten in Tabelle A bekommen schreibst Du die Daten in A und holst sie Dir wieder indem Du im Query nach allen eingetragenen Daten fragst.
Dabei ist dann die Wahrscheinlichkeit recht hoch, dass Du genau den Eintrag wieder bekommst den Du grad eingetragen hast, besonders wenn Du mit Timestamps arbeitest.
Dann kannst Du die Daten, inclusive der ID aus A in Tabelle B schreiben.

Weiterhin ist mir SET in einem INSERT unbekannt, kenne das nur von UPDATE.
Code:
INSERT INTO tabelle (col1,col2,col3) VALUES ('$var1','$var2','$var3')
 
in dann trotzdem mit 2 INSERT Anweisungen arbeiten

Das mit dem SET geht eigentllich bisher immer ganz gut - hatte noch nie Probleme mit - bis eben...
 
Ich schätze mal, dass in der Abfrage b ein Syntax- oder Logikfehler vorliegt. Anders kann ich mir es nicht erklären, dass keine Daten in die Tabelle angefügt werden.


Ich persönlich halte die INSERT-Syntax mit SET-Klausel weitaus übersichtlicher.
 
Wenn Dir ein Syntax Fehler auffällt ...
mir fällt keiner auf:
PHP:
$einfuegen ="INSERT INTO ean_code
				   SET ean='$eancode',
				   beschreibung='$bezeichnung',
				   einkaufspreis='$ek',
				   verkaufspreis='$vk' ;"; 
$einfuegen = mysql_query($einfuegen);
Spalten- und Variablennamen stimmen. Hab gerade nochmal nachgeschaut
 
Mein Vorschlag:
PHP:
<?php

	…
	$query ="
		INSERT INTO
		        `ean_code`
		  SET
		        `ean`           = '".mysql_real_escape_string($eancode)."',
		        `beschreibung`  = '".mysql_real_escape_string($bezeichnung)."',
		        `einkaufspreis` = '".mysql_real_escape_string($ek)."',
		        `verkaufspreis` = '".mysql_real_escape_string($vk)."'
		";
	if( !mysql_query($query) ) {
		echo '<p>'.htmlentities(mysql_error()).'</p><pre>'.htmlentities($query).'</pre>';
	}
	…

?>
 
Was soll denn das für ne function sein: mysql_real_escape_string() die wird bei mir nicht erkannt - ist "undefined"
 
[phpf]mysql_real_escape_string[/phpf] ab PHP v4.3.0.
[phpf]mysql_insert_id[/phpf] wird auch noch interessant für ich (zwischen dem Insert für Tabelle A und B).
 
Zurück