[PHP&MYSQL] Select im Insert

pchero

Ensign
Dabei seit
Juni 2006
Beiträge
170
Hi

hab da mal so ne Frage bin zwar jetzt nicht soo der Freak in sachen Mysql aber ich habe da so ein problem bzw ich weiß überhaupt gar nicht mal so ob es Syntaxtechnisch überhaupt möglich ist!

PHP:
$mysql->query('INSERT INTO `inventar` (`uid`, `name`, `type`, `level`, `schaden`, `schutz`) '.$mysql->last_id.', (SELECT `name`, `type`, `level`, `schaden`, `schutz` FROM `items` WHERE `id`= "1") ;')

und meine Classe gibt das als Fehler aus

mySQL meldet:
Fehler-Nummer: 1064
Fehler-Beschreibung: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1, (SELECT `name`, `type`, `level`, `schaden`, `schutz` FROM `items` WHERE `id`=' at line 1
SQL-Abfrage: INSERT INTO `inventar` (`uid`, `name`, `type`, `level`, `schaden`, `schutz`) 1, (SELECT `name`, `type`, `level`, `schaden`, `schutz` FROM `items` WHERE `id`= "1") ;
ich glaube die Frage wo ich net weiß ob es richtig sieht man sofort oder ?

MFG
 

Zweipunktnull

Commander
Dabei seit
Dez. 2004
Beiträge
2.546
Was willst du denn überhaupt machen? Die Syntax ist falsch, aber ich erkenne die Logik hinter dem Query auch nicht.
 

cde3

Cadet 3rd Year
Dabei seit
Dez. 2005
Beiträge
42
die Syntax ist falsch, richtig wäre:

INSERT INTO `inventar` (`name`, `type`, `level`, `schaden`, `schutz`)
SELECT `name`, `type`, `level`, `schaden`, `schutz` FROM `items` WHERE `id`= 1 ;

falls du 'uid' auf einen bestimmten Wert setzen möchtest (kein autoincrement), dann muss der gewünschte Wert auch mit selected werden
 

Zweipunktnull

Commander
Dabei seit
Dez. 2004
Beiträge
2.546
Ach so, du wolltest einen Datensatz aus einer Tabelle in eine andere Tabelle einfügen?
Einen kleinen Tipp noch: Dein Statement ist so schlecht zu lesen wie... keine Ahnung, meine Unterschrift. :)
Dein Statement ist wirklich schlecht zu durchschauen und auf den ersten Blick erkennt man erstmal gar nichts. Ich mach es zum Beispiel so, dass ich vor jedem SQL-Schlüsselwort einen Zeilenumbruch mache. Dann kann man das Statement auch direkt auf den ersten Blick durchschauen.

Code:
INSERT INTO `inventar` (`uid`, `name`, `type`, `level`, `schaden`, `schutz`)
SELECT `uid`, `name`, `type`, `level`, `schaden`, `schutz`
FROM `items`
WHERE `id`= '1'
 

pchero

Ensign
Ersteller dieses Themas
Dabei seit
Juni 2006
Beiträge
170
hmm kk also ich werde ma schauen ob ich das dann nicht einfach mit 1 oder 2 mehr Abfragen dann mache ;)

nen Versuch wars ja wert
 
Top