PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Was ist an dieser Abfrage falsch?



Nighthawk
05-03-2003, 22:03
INSERT INTO player_info (
player_id,
test_player_pass,
date_player_signup,
text_player_email,
text_player_location)
VALUES (
currval('"player_id_player_seq"'::text),
'".$_POST['passwd']."',
'$regdate',
'".$_POST['email']."',
'".$_POST['location']."');


Bei der Zeile mit currval krieg ich einen Parse Error, wie muss das richtig aussehen?

elrond
06-03-2003, 11:12
was soll das für ein wert werden ?

wenn player_id eine identity-Spalte ist wie ich vermute, versuch's so:



INSERT INTO player_info (
test_player_pass,
date_player_signup,
text_player_email,
text_player_location)

VALUES (
'".$_POST['passwd']."',
'$regdate',
'".$_POST['email']."',
'".$_POST['location']."');



ansonsten kann ich mit dem Ausdruck "currval('"player_id_player_seq"'::text)
" nichts anfangen

mit welcher db arbeitest du? versuchst du einen oracle-sequenz benutzen?

Nighthawk
06-03-2003, 16:27
Paar mehr Infos wären wohl gut :D
Ich benutze eine PostgreSQL-Datenbank, also Sequenz stimmt schon.
Hier nochmal etwas vereinfacht das Problem:

Tabelle 'player'


Feld Typ Länge Not Null Default
id_player int4 4 Ja nextval('"player_id_player_seq"'::text)
text_player_login varchar 20 Ja


Tabelle 'player_info'


Feld Typ Länge Not Null Default Aktion
id_playerinfo int4 4 Ja nextval('"player_info_id_playerinfo_seq"'::text)
id_player int4 4 Ja
text_player_pass text var Nein


Ich trage einen neuen Benutzernamen in die Tabelle 'player' ein der eine ID bekommt. Die ID muss ich ja auch in der Tabelle 'player_info' in der Passwort usw. stehen eintragen, will dafür allerdings möglichst wenige Abfragen verwenden. Deshalb will ich die ID nicht mit einem extra 'SELECT' auslesen sondern mit 'currval' direkt abfragen. Allerdings führt das abgesehen davon dass wahrscheinlich PostgreSQL etwas an der Abfrage zu mosern hätte diese schon in PHP zu einem 'Parse Error'. Deshalb wären meine Fragen jetzt
a) Wie ist die Synthax damit PHP die Abfrage parsen kann und
b) Wie muss die korrekte PostgreSQL Abfrage aussehen.

Meine derzeitige Abfrage sieht folgendermaßen aus:



$insert = "BEGIN;

INSERT INTO player (
text_player_login)
VALUES (
'".$_POST['user']."');

INSERT INTO player_info (
player_id,
test_player_pass)
VALUES (
currval('"player_id_player_seq"'::text),
'".$_POST['passwd']."');

COMMIT;"

$add_user = $db_object->query($insert);

elrond
07-03-2003, 06:36
versuch die Hochkommas zu quoten:

currval('\"player_id_player_seq\"'::text),