Ich schrieb eine MYSQL-Prozedur für meine Benutzerregistrierungsseite, ich habe bereits den PHP-Teil geschrieben, um Daten von dort an MySQL zu senden, und es funktioniert gut (mit Dummy-Daten versucht und Abruf). Aber es gibt eine Art von Problem mit meinem Handler oder Transaktion IMySQL sagte 1064 Sie haben einen Fehler in Ihrer SQL-Syntax
erratenDas ist mein Vorgehen:
BEGIN
DECLARE unamec INT;
DECLARE emailc INT;
DECLARE m INT;
DECLARE msg VARCHAR(100);
DECLARE EXIT HANDLER FOR SQLEXCEPTION SET m=1;
START TRANSACTION;
SET autocommit=0;
SELECT COUNT(*) INTO unamec FROM login WHERE uname=`@user`;
IF unamec=0 THEN
SELECT COUNT(*) INTO emailc FROM login WHERE [email protected];
IF emailc=0 THEN
INSERT INTO login (uname, hash, email, role) values(@user,MD5(@password),@email,'1');
SET msg='Successfully Registered';
ELSE
SET msg='Email Already Exists';
END IF;
ELSE
SET msg='Username Already Exists';
END IF;
COMMIT;
END;
END;
IF m=1 THEN
ROLLBACK;
SET msg='ERROR';
END IF;
SELECT msg as message;
END
bekomme ich immer die Fehler
MySQL said: #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
'END;
IF m=1 THEN
ROLLBACK;
SET msg='ERROR';
END IF;
SELECT msg as message;' at line 23
Gibt es etwas offensichtlich, dass ich fehle? Ich habe seit einiger Zeit versucht, dies mit fast allen Ergebnissen zu lösen, um den gleichen Fehler zu zeigen.
Jede Hilfe wird sehr geschätzt.
@Strawberry vielleicht wegen zwei 'END' s? –
Das wäre meine Vermutung, aber ich schreibe nicht zu viele Sprocs/Transaktionen – Strawberry
Sie haben zwei END; Anweisungen nach COMMIT; das verursacht das Problem –