2012-03-13 8 views
0

私はクライアントのためのWordPressのインストールに取り組んでいます。 彼が選んだ電子商取引のプラグインはWordpressユーザーとうまく統合できません。 新しいユーザーレコードがwordpressで作成されたときに、プラグインのユーザーアカウントシステムに新しいレコードを挿入しようとしています。 私には、挿入前にユーザーデータをプラグインテーブルにコピーするwp_usersテーブルのトリガがそのトリックを行うように思えました。十分に簡単です。 しかし、私のテストでは、何もするw​​p_usersテーブルトリガーを取得することはできません。新しいユーザーアカウントの作成がハングアップし、トリガーイベントが挿入前または挿入後の場合、データがwp_usersに挿入されなくなります。更新前に指定すると、wp_usersではデータ挿入が許可されますが、Pluginテーブルでは挿入できません。 トリガーを正しく実行したことがありません。このMySQLトリガーが正しく実行されないのはなぜですか?

DROP TRIGGER IF EXISTS `user_update`// 
CREATE TRIGGER `dbname`.`user_update` 
AFTER INSERT 
ON `wp_users` FOR EACH ROW 
BEGIN 
INSERT INTO `test_data_dump` (`username`, `password`, `email`, `first_name`, `created_at`) VALUES(user_login, user_pass, user_email, user_nicename, user_registered); 
END 

任意の洞察力がimmensley役立つだろう: はここに私のコードです。

答えて

2

この行に問題があります。

INSERT INTO 'test_data_dump' ('username', 'password', 'email', 'first_name', 'created_at') 
    VALUES (new.user_login, new.user_pass, new.user_email, new.user_nicename, new.user_registered); 

EDIT:すべてのあなたのテーブルの列と名前が一致すると仮定すると、この構文は動作するはずです:

DROP TRIGGER IF EXISTS user_update; 

CREATE TRIGGER user_update AFTER INSERT ON wp_users 
FOR EACH ROW BEGIN 
    INSERT INTO test_data_dump ('username', 'password', 'email', 'first_name', 'created_at') 
    VALUES (new.user_login, new.user_pass, new.user_email, new.user_nicename, new.user_registered); 
END; 
+0

投げるエラーをあなたが新たに挿入されたデータを参照しているときに言葉newを使用する必要があります... insert文にold.usernameなどを指定する必要がありますか? – user1267382

+0

UPDATEには 'old'がありますが、INSERTトリガにはありません。 – CAbbott

+0

それから構文エラーなしで保存するためのトリガーを取得することさえできないので、私はあなたがこれをどうやって行うのか尋ねるでしょう。私はdbname.'semics5_test_data_dump'( '' username' INTO INSERTをBEGINにDROP TRIGGER IFがEACH ROW FOR semics5_users' 'ON INSERT AFTER' user_update_trigger' // が dbname'.'user_update_trigger' 'CREATE TRIGGERをEXISTSを使用していますtyring 、 'password'、' email'、 'first_name'、' created_at')VALUES(new.user_login、new.user_pass、new.user_email、new.user_nicename、new.user_registered); END //; – user1267382

関連する問題