Ich habe eine stored procedure, die einen Eintragen der Datenbank anlegen soll. Und in jedem Fall die out-Parameter @message (string) und @success (int) setzen soll.
Dies ist die stored procedure, die ein beim Eintragen eines neuen Teams aufgerufen wird:
Ich nutze ein pdo prepared statement. Nach dem execute() möchte ich mir die out parameter holen. Im Erfolgsfall (Eintragung in die Dankenbank war erfolgreich), wird sowohl die Message (Anmeldung war erfolgreich) als auch success (1) gesetzt. Wenn es aus irgendeinem Grund nicht klappt bekomme als Resultat ein Array voller NULL-Werte.
Beispiel-Daten, mit denen die Eintragung beim ersten Mal senden funktioniert und beim zweiten Mal nicht (das ist ja soweit erstmal das gewünschte Verhalten):
Woran kann es liegen, dass die out-params nur im Erfolgsfall zurückommen?
Müssen out parameter etwa auch mit bindParam() gebunden werden?
Liebe Grüße S
Dies ist die stored procedure, die ein beim Eintragen eines neuen Teams aufgerufen wird:
Code:
BEGIN DECLARE teamExist BOOL; DECLARE anmeldung BOOL DEFAULT false; SELECT TRUE INTO teamExist FROM t_teams WHERE teamname=in_teamname; IF(teamExist) THEN SET out_message = "Teamname existiert bereits. Anmeldung wurde abgebrochen."; INSERT INTO t_fehlerprotokoll (fehler) VALUE ("Teamname existiert bereits. Anmeldung wurde abgebrochen."); SET out_success = false; ELSEIF (in_klassenstufe < 1 OR in_klassenstufe > 3) THEN SET out_message = "Die Klassenstufe ist nicht korrekt. Anmeldung wurde abgebrochen."; INSERT INTO t_fehlerprotokoll (fehler) VALUE ("Die Klassenstufe ist nicht korrekt. Anmeldung wurde abgebrochen."); SET out_success = false; ELSEIF(in_teilnehmerZahl < 3 OR in_teilnehmerZahl > 5) THEN SET out_message = "Teilnehmerzahl ist nicht korrekt. Anmeldung wurde abgebrochen."; INSERT INTO t_fehlerprotokoll (fehler) VALUE ("Teilnehmerzahl ist nicht korrekt. Anmeldung wurde abgebrochen."); SET out_success = false; ELSE CASE in_teilnehmerZahl WHEN 3 THEN INSERT INTO t_teams (teamname, email, klassenstufe, schule, teilnehmerZahl, teiln1_nn, teiln1_vn, teiln1_kl, teiln1_sex, teiln2_nn, teiln2_vn, teiln2_kl, teiln2_sex, teiln3_nn, teiln3_vn, teiln3_kl, teiln3_sex) VALUES (in_teamname, in_email, in_klassenstufe, in_schule, in_teilnehmerZahl, in_teiln1_nn, in_teiln1_vn, in_teiln1_kl, in_teiln1_sex, in_teiln2_nn, in_teiln2_vn, in_teiln2_kl, in_teiln2_sex, in_teiln3_nn, in_teiln3_vn, in_teiln3_kl, in_teiln3_sex); SET out_message = "Anmeldung war erfolgreich."; SET out_success = true; WHEN 4 THEN INSERT INTO t_teams (teamname, email, klassenstufe, schule, teilnehmerZahl, teiln1_nn, teiln1_vn, teiln1_kl, teiln1_sex, teiln2_nn, teiln2_vn, teiln2_kl, teiln2_sex, teiln3_nn, teiln3_vn, teiln3_kl, teiln3_sex, teiln4_nn, teiln4_vn, teiln4_kl, teiln4_sex) VALUES (in_teamname, in_email, in_klassenstufe, in_schule, in_teilnehmerZahl, in_teiln1_nn, in_teiln1_vn, in_teiln1_kl, in_teiln1_sex, in_teiln2_nn, in_teiln2_vn, in_teiln2_kl, in_teiln2_sex, in_teiln3_nn, in_teiln3_vn, in_teiln3_kl, in_teiln3_sex, in_teiln4_nn, in_teiln4_vn, in_teiln4_kl, in_teiln4_sex); SET out_message = "Anmeldung war erfolgreich."; SET out_success = true; ELSE INSERT INTO t_teams (teamname, email, klassenstufe, schule, teilnehmerZahl, teiln1_nn, teiln1_vn, teiln1_kl, teiln1_sex, teiln2_nn, teiln2_vn, teiln2_kl, teiln2_sex, teiln3_nn, teiln3_vn, teiln3_kl, teiln3_sex, teiln4_nn, teiln4_vn, teiln4_kl, teiln4_sex, teiln5_nn, teiln5_vn, teiln5_kl, teiln5_sex) VALUES (in_teamname, in_email, in_klassenstufe, in_schule, in_teilnehmerZahl, in_teiln1_nn, in_teiln1_vn, in_teiln1_kl, in_teiln1_sex, in_teiln2_nn, in_teiln2_vn, in_teiln2_kl, in_teiln2_sex, in_teiln3_nn, in_teiln3_vn, in_teiln3_kl, in_teiln3_sex, in_teiln4_nn, in_teiln4_vn, in_teiln4_kl, in_teiln4_sex, in_teiln5_nn, in_teiln5_vn, in_teiln5_kl, in_teiln5_sex); SET out_message = "Anmeldung war erfolgreich."; SET out_success = true; END CASE; END IF; END
Beispiel-Daten, mit denen die Eintragung beim ersten Mal senden funktioniert und beim zweiten Mal nicht (das ist ja soweit erstmal das gewünschte Verhalten):
Code:
CALL schueler("Gruppe 1", "gruppe@email.de","2","BeispielSchule","3","NACHNAME","Vorname","1","m","Hofmann","Helen","2","w","Ayoub", "Razan","2","w",NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, @message, @success)
Müssen out parameter etwa auch mit bindParam() gebunden werden?
Liebe Grüße S
Kommentar