mmofacts.com

INSERT INTO ... SELECT FROM

gepostet vor 19 Jahre, 1 Monat von Fornax
Hi!
Ich habe ein MySQL-Befehl, das auch wunderbar funktioniert:

 

$sql = "
INSERT INTO einheiten
(user_id, typ_id, name, rumpf, eisen, x_pos, y_pos, time, status)
SELECT
{$user["id"]},
einheiten_typ.id,
einheiten_typ.name,
einheiten_typ.rumpf,
einheiten_typ.eisen,
{$user["x_pos"]},
{$user["y_pos"]},
" . (time()+$zeit_gesammt) . "+einheiten_typ.dauer,
\"bau\"
FROM einheiten_typ WHERE id={$einheit_id}";

$result = mysql_query($sql);Vereinfacht

Undzwar erstellt ein Benutzer ein Entwurf, den er dann baut. Wenn er auf bauen klickt, wird die Abfrage ausgeführt. Was ich will, aber leider nicht hinbekomme, ist, dass ich auf de Sachen, die ich mit SELECT bekomme, später mit PHP zugreife.
$zeile = mysql_fetch_array($result, MYSQL_BOTH);
Geht das, oder muss ich noch eine extra SELECT-Abfrage machen?
gepostet vor 19 Jahre, 1 Monat von Störti
Noch einmal Schritt für Schritt:

Du willst in eine Tabelle Zeilen einfügen.
Diese Zeilen ermittelst du per SELECT innerhalb der gleichen Abfrage.
Dann willst du, ausgehend von der gleichen Abfrage, auf die SELECT-Daten zugreifen.

Ich sehe das so: Der erste Befehl, den du in deiner Query stehen hast ist "INESERT INTO". Damit wird die gesamte Abfrage auch als "INSERT" bearbeitet und er wird nichts zurückgeliefert (zumindest keine Zeilen), da der SELECT ja nicht der primäre Befehl ist. Du musst also danach nocheinmal eine SELECT-Abfrage durchführen, um an die Datensätze zu kommen.
gepostet vor 19 Jahre, 1 Monat von Fornax
Ok, das hatte ich befürchtet

Ich hatte gehofft, dass er die Daten vom SELECT evtl. zurück gibt, weil ich die Dauer der Einheit später noch brauche :roll:

Auf diese Diskussion antworten