私は自分のユーザー登録ページのためのMYSQLプロシージャを書きました、私はすでにそこにそこからMySQLにデータを送信するPHP部分を書いて、検索)。しかし、私はこれは私の手順でMySQLが1064あなたはあなたのSQL構文にエラーがあります
を推測する私のハンドラまたは取引の問題点のいくつかの並べ替えがあります:
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
私は常にエラーに
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
を取得するには、私が行方不明です明らかに何かがありますか?私は同じエラーを表示するためにほとんどすべての結果でこれを解決するためにしばらく時間をかけています。
ご協力いただければ幸いです。
@Strawberryおそらく2つの 'END'sのため? –
それは私の推測だろうが、私はあまりにも多くのsprocs /トランザクションを書くことはありません – Strawberry
あなたは2つのENDを持っています。 COMMITの後のステートメント。それは問題の原因となっている –