insert mit select

grünes-huhn

Mitglied
Hi liebe Leute!

ich brauch mal bisschen Hilfe von euch....

Mein Code:

PHP:
INSERT INTO positionen (titel) 
SELECT titel	FROM positionen WHERE posid='50' ;

Es sollen also alle Zeilen mit der posid 50 kopiert werden und der titel eingetragen werden.
Das funktioniert leider nur einmal, sprich wenn ich 3 Zeilen mit der posid 50 habe, macht er nur eine.

Laut dem Handbuch sollten aber auch mehrere Datensätze eingefügt werden können.

Was mach ich hier denn falsch?


Danke schon mal!
 
Du kannst nicht gleichzeitig von ein und derselben Tabelle einfügen und lesen ;)
Ein paar Zeilen tiefer im "Handbuch":
http://dev.mysql.com/doc/refman/5.1/de/insert-select.html hat gesagt.:
Zurzeit können Sie in einer Unterabfrage keine Einfügeoperation in eine Tabelle durchführen und gleichzeitig eine Auswahl in einer anderen Tabelle treffen.
Vielleicht hängt es damit zusammen.
 
Zuletzt bearbeitet:
Hi,

http://dev.mysql.com/doc/refman/5.1/de/insert-select.html
Zurzeit können Sie in einer Unterabfrage keine Einfügeoperation in eine Tabelle durchführen und gleichzeitig eine Auswahl in einer anderen Tabelle treffen.

Was auch immer für ein Konstrukt damit gemeint sein mag.

Von der gleichen Seite:

Die Zieltabelle der INSERT-Anweisung kann in der FROM-Klausel des SELECT-Teils der Abfrage erscheinen. (Dies war bei einigen älteren MySQL-Versionen nicht möglich.)

@huhn: Hast Du in der Tabelle einen Primary Key oder Unique oder so was ohne AUTO_INCREMENT?

LG

Nachtrag: error_reporting hilft hier nicht. Du musst prüfen, ob die Abfrage erfolgreich war und gegebenenfalls mit [phpf]mysql_error[/phpf] den Fehler ausgeben lassen.
 
Zuletzt bearbeitet:
@huhn: Hast Du in der Tabelle einen Primary Key oder Unique oder so was ohne AUTO_INCREMENT?

LG


ja mein id, aber das hab ich ausgenommen, drum ja kein SELECT *, sondern eine Auflistung der Spaltennamen. (titel ist nur einer davon, wenn ich alles genommen hätte wärs zu unübersichtlich ----> nur mit titel hab ich auch schon versucht, daran liegt es nicht ;))
 
Na ja, aber dann ist das doch klar. Wenn das Feld nicht auf AUTO_INCREMENT steht, aber keine doppelten Werte vorkommen dürfen...

Wie gesagt, prüfe, ob die Abfrage erfolgreich war und lass Dir den Fehler ausgeben.

LG


steht ja auf AUTO_INCREMENT, kann also nicht doppelt sein.

bei mysql_error(); kommt nichts... :mad:

ohje.. ich bin ein idiot!!

Funktioniert doch wunderbar. nur mein Update, das ich hintennach schiebe macht er nur einmal.....

Danke trotzdem Ich bin echt ein Depp, tut mir leid...
 
Ach ich hätt noch ne Frage....

Jetzt schreibt er ja z.b zwei Datensätze, gibt jedoch nur ein mysql_insert_id() weiter (eh klar).

wie kann ich ihm sagen, er soll mir alle insert_id´s ausgeben?
 

Neue Beiträge

Zurück