Hi,
ich wollte gerne ein Login-System in MySQL über eine gespeicherte Prozedur schreiben:
Erstmal bisschen Code:
CREATE DATABASE Test;
USE Test;
CREATE TABLE Test.t_Benutzer
(
Name CHAR(32),
Passwort CHAR(32),
PRIMARY KEY(Name)
);
INSERT INTO Test.t_Benutzer(Name ,Passwort) VALUES ('root', '0000');
Die SQL-Befehle im oberigen Code funktionieren über "PHPMyAdmin" perfekt.
Meine Idee war, dass bei jeden Aufruf einer gespeicherte Prozedur, erstmal überprüft wird, ob Benutzer und Passwort, die in der Tabelle "Test.t_Benutzer" stehen richtig ist.
Ich hab mir deshalb diese gespeicherte Prozedur geschrieben:
DELIMITER $$
CREATE PROCEDURE Test.Anmelden(IN BenutzerName CHAR(32), IN Passwort CHAR(32), OUT Angemeldet BOOL)
BEGIN
DECLARE erfolg BOOL DEFAULT FALSE;
DECLARE passw CHAR(32);
SELECT Passwort INTO passw FROM Test.t_Benutzer WHERE Name=BenutzerName;
IF passw=Passwort THEN
erfolg=TRUE;
END IF;
SELECT erfolg INTO Angemeldet;
END$$
DELIMITER;
Die gespeicherte Prozedur soll überprüfen, ob der Benutzername und Passwort richtig ist, indem FALSE oder TRUE, je nachdem ob richtig angemeldet, über den Parameter
"Angemeldet" zurückgeliefert wird.
Das Problem ist:
1. Ich hantiere zum ersten mal mit gespeicherten Prozeduren (NOOB).
2. PHPMyAdmin liefert mir eine Fehlermeldung bei dem einfügen der gespeicherte Prozedur, die ich nicht verstehe:
SQL-Befehl:
DELIMITER $$ CREATE PROCEDURE Test.Anmelden(
IN BenutzerNameCHAR( 32 ) ,
IN PasswortCHAR( 32 ) ,
OUT Angemeldet BOOL
) BEGIN DECLARE erfolg BOOL DEFAULTFALSE;
MySQL meldet: Dokumentation
#1064 - 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 'DELIMITER $$
CREATE PROCEDURE Test.Anmelden(IN BenutzerName CHAR(32), IN Pass' at line 1
Ich hoffe ihr könnt mir helfen.
Thx