2012-02-28 3 views
1

私のウェブサイトに外部フォーラムスクリプト(SMF)を「同期」しようとしています。 Thatsとは、ユーザーが自分のウェブサイトに登録すると、ユーザーの詳細(ユーザー名、パスワード、電子メール)を外部フォーラムメンバー表に挿入するトリガーを意味します。 そのようなものですが、間違ったSQLエラーです。新しいユーザーの詳細を別のテーブルに挿入するためのトリガーを作成するにはどうすればよいですか?

CREATE TRIGGER forumReg 
AFTER INSERT ON hotaru_users 
FOR EACH ROW 
BEGIN 
    INSERT INTO forum_members (member_name, email_address, passwd) 
    VALUES (NEW.user_username, NEW.user_email, NEW.user_password); 
END 

hotaru_users、 forum_members私のウェブサイトのユーザーテーブルで外部のフォーラムのユーザーテーブルで、 両方のテーブルが同じmysqlデータベースにある

エラー

Erro 

consulta SQL: 

CREATE TRIGGER forumReg AFTER INSERT ON hotaru_users 
FOR EACH 
ROW 
BEGIN 
INSERT INTO forum_members(member_name, email_address, passwd) 
VALUES (
NEW.user_username, NEW.user_email, NEW.user_password 
); 

Mensagens do MySQL : Documentação 
#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 '' at line 6 
+0

エラーは何ですか? "hotaru_users"と "forum_members"は同じデータベースの一部か、別のサーバーにありますか? – Matt

+0

@Yuck:私のコメントを投稿した時点でまだ明確ではなかった.... –

+0

おそらくフォーラムのメンバーテーブルは別のDBにあるのだろうか? – horatio

答えて

1

どちらか、BEGINを削除END

CREATE TRIGGER forumReg 
AFTER INSERT ON hotaru_users 
FOR EACH ROW 
    INSERT INTO forum_members (member_name, email_address, passwd) 
    VALUES (NEW.user_username, NEW.user_email, NEW.user_password); 

トリガー作成の区切り文字を変更する:

DELIMITER $$ 
CREATE TRIGGER forumReg 
AFTER INSERT ON hotaru_users 
FOR EACH ROW 
BEGIN 
    INSERT INTO forum_members (member_name, email_address, passwd) 
    VALUES (NEW.user_username, NEW.user_email, NEW.user_password); 
END 
$$ 
DELIMITER ; 
+0

はSQLエラーを修正してフォーラムのメンバーテーブルにユーザーの詳細を挿入していますが、パスワードが間違ったパスワードを格納するようにハッシュされていることがわかりました。このハッシュのことを処理する方法はありますか? –

+0

ハッシングはどこにありますか?アプリケーションコードでは?行が 'hotaru_users'に挿入されたときに、別のトリガで? –

+0

ユーザが自分のウェブサイトに登録すると、パスワードがhotaru_usersテーブルにハッシュされて保存されます。上記のトリガが実行されると、ハッシュされたパスワードがforum_membersテーブルに挿入されます。だから私はフォーラムにログインしようとすると、間違ったパスワードを取得します。 –

関連する問題