[GastForen Programmierung/Entwicklung PHP und MySQL Variablen in mysql

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Variablen in mysql

Anonym
Beiträge gesamt: 22827

1. Mär 2004, 13:53
Beitrag # 1 von 9
Bewertung:
(1767 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!

Ich habe eine Tabelle A mit einem auto_increment Feld namens ID und eine Tabelle B, in die ID aus A als Foreign Key eingetragen werden soll. In einem Sql Skript erstelle ich beide Tabellen und möchte dann sofort Werte eintragen. Ich habe mir das in etwa so vorgestellt:

Insert into A Values ();
var = Select MAX(ID) from A;
Insert into B (A_ID, DATA) Values (var, 'irgendwas');

Leider weiß ich nicht, wie man mit Variablen umgeht.
Kann mir hier jemand weiterhelfen?
Gibt es einen besseren Weg das Problem zu lösen?

Besten Dank!
X

Variablen in mysql

oesi50
  
Beiträge gesamt: 2315

1. Mär 2004, 15:06
Beitrag # 2 von 9
Beitrag ID: #72853
Bewertung:
(1767 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi,
probier mal das:

Insert into A Values ();
Insert into B (A_ID, DATA) Values (LAST_INSERT_ID(), 'irgendwas');

Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)


als Antwort auf: [#72828]

Variablen in mysql

Anonym
Beiträge gesamt: 22827

1. Mär 2004, 15:28
Beitrag # 3 von 9
Beitrag ID: #72860
Bewertung:
(1767 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank!


als Antwort auf: [#72828]

Variablen in mysql

Anonym
Beiträge gesamt: 22827

2. Mär 2004, 07:18
Beitrag # 4 von 9
Beitrag ID: #72951
Bewertung:
(1767 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!

Hab nun ein neues Problem - im wesentlichen eine Verallgemeinerung des 1. Problems:

Wie funktioniert es, wenn ich 3 Tabellen A, B und C habe. Der Primary Key von A ist wieder ein auto_increment Wert, der sowohl in B als auch in C als Foreign Key eingetragen werden soll. Der Primary Key von B und C ist ebenfalls ein auto_increment Wert.

Insert into A Values ();
Insert into B (A_ID, data) Values (LAST_INSERT_ID(), 'irgendwas');
Insert into C (A_ID, data) Values (LAST_INSERT_ID(), 'irgendwas');

Für die Tabelle C würde in diesem Fall die ID der Tabelle B geliefert werden und nicht wie beabsichtigt die ID der Tabelle A.

Was kann man in diesem Fall machen?

Grüsse,
--Alex


als Antwort auf: [#72828]

Variablen in mysql

oesi50
  
Beiträge gesamt: 2315

2. Mär 2004, 11:24
Beitrag # 5 von 9
Beitrag ID: #72992
Bewertung:
(1767 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi Alex,

versuch mal so etwas:

mysql_query("Insert into A Values ()") or die("Invalid query: " . mysql_error());
$letzte_id = mysql_insert_id();
mysql_query("Insert into B (A_ID, data) Values ($letzte_id, 'irgendwas')");
mysql_query("Insert into C (A_ID, data) Values ($letzte_id, 'irgendwas')");

Es ist wichtig, zu prüfen ob der erste Insert fehlerfrei war, sonst werden in den Nachfolgenden falsche Werte(NULL, 0 oder default) eingetragen.

Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)


als Antwort auf: [#72828]
(Dieser Beitrag wurde von oesi50 am 2. Mär 2004, 11:40 geändert)

Variablen in mysql

Anonym
Beiträge gesamt: 22827

2. Mär 2004, 13:13
Beitrag # 6 von 9
Beitrag ID: #73009
Bewertung:
(1767 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Oesi!

Danke für Deine Antwort, aber ich bräuchte irgend etwas, das ich in ein SQL Create Skript schreiben kann bzw. direkt in der mysql shell eingeben kann. Gibt es da noch irgeneine andere Möglichkeit?

Grüsse,
--Alex


als Antwort auf: [#72828]

Variablen in mysql

Anonym
Beiträge gesamt: 22827

2. Mär 2004, 13:17
Beitrag # 7 von 9
Beitrag ID: #73013
Bewertung:
(1767 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Oesi!

Danke für Deine Antwort, aber ich bräuchte irgend etwas, das ich in ein SQL Create Skript schreiben kann bzw. direkt in der mysql shell eingeben kann. Gibt es da noch irgeneine andere Möglichkeit?

Grüsse,
--Alex


als Antwort auf: [#72828]

Variablen in mysql

oesi50
  
Beiträge gesamt: 2315

2. Mär 2004, 14:08
Beitrag # 8 von 9
Beitrag ID: #73025
Bewertung:
(1767 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
INSERT INTO test1 VALUES();
SELECT @letzte_id := LAST_INSERT_ID();
INSERT INTO test2 (id1, data) VALUES (@letzte_id, 'irgendwas');
INSERT INTO test3 (id1, data) VALUES (@letzte_id, 'irgendwas');

Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)


als Antwort auf: [#72828]
(Dieser Beitrag wurde von oesi50 am 2. Mär 2004, 14:09 geändert)

Variablen in mysql

Anonym
Beiträge gesamt: 22827

2. Mär 2004, 14:52
Beitrag # 9 von 9
Beitrag ID: #73034
Bewertung:
(1767 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank (schon wieder)!

Das war, was ich gesucht habe!

Grüsse,
--Alex


als Antwort auf: [#72828]
X