2014-09-30 95 views
4

我在MyQL中为我的Wordpress数据库创建了一个存储过程。这一程序的目的是为了注册一个新用户导入到WordPress中使用数据库凭据(user_loginuser_passuser_nicenameuser_emaildisplayname) 这个程序的SQL语法是好的,但是当我打电话的过程我不能得到任何东西响应,它会告诉用户是否将新用户添加到数据库中。我不知道问题是什么,因为当我调用过程后检入数据库时​​,我看不到有任何更改。registerWithCredentials()存储过程

-- -------------------------------------------------------------------------------- 
-- Routine DDL 
-- Note: comments before and after the routine body will not be stored by the server 
-- -------------------------------------------------------------------------------- 
DELIMITER $$ 

CREATE DEFINER=`root`@`127.0.0.1` PROCEDURE `registerWithCredentials`(IN in_userlogin VARCHAR(50), IN in_userpass VARCHAR(32),IN in_usernicename VARCHAR(50) ,IN in_useremail VARCHAR(50), IN in_displayname VARCHAR(50)) 
proc_main:BEGIN 
BEGIN 
DECLARE ID int(10); 
DECLARE CheckExists INT; 

SET CheckExists=0; 

select count(*) into CheckExists from wp_users where user_login like in_userlogin or user_email like in_useremail; 
if (CheckExists>0) 
then 

    leave proc_main; 
end if; 


if (in_userpass is not null or in_userpass !='') and (in_useremail is not null or in_useremail !='') 
then 
    insert into prod_huselbrand_db.wp_users (
    user_login 
    ,user_pass 
    .user_nicename 
    ,user_email 
    ,display_name 
) VALUES (
    in_userlogin -- username - IN varchar(50) 
    -- email - IN varchar(50) 
    ,MD5(in_userpass) -- passwd - IN blob , 
    ,in_usernicename 
,in_useremail 
,in_displayname 
); 
else 
    leave proc_main; 
end if; 
set ID:=LAST_INSERT_ID(); 

end; 
END proc_main 

回答

4

我认为您需要在代码的末尾进行选择,以便您可以从存储过程输出内容。如果我像你一样,我会输出新注册用户的数据。这里是程序,希望它有帮助:

-- -------------------------------------------------------------------------------- 
-- Routine DDL 
-- Note: comments before and after the routine body will not be stored by the server 
-- -------------------------------------------------------------------------------- 
DELIMITER $$ 

CREATE DEFINER=`root`@`127.0.0.1` PROCEDURE `registerWithCredentials`(IN in_userlogin VARCHAR(50), IN in_userpass VARCHAR(32),IN in_usernicename VARCHAR(50) ,IN in_useremail VARCHAR(50), IN in_displayname VARCHAR(50)) 
proc_main:BEGIN 
BEGIN 
DECLARE ID int(10); 
DECLARE CheckExists INT; 

SET CheckExists=0; 

select count(*) into CheckExists from wp_users where user_login like in_userlogin or user_email like in_useremail; 
if (CheckExists>0) 
then 

    leave proc_main; 
end if; 


if (in_userpass is not null or in_userpass !='') and (in_useremail is not null or in_useremail !='') 
then 
    insert into prod_huselbrand_db.wp_users (
    user_login 
    ,user_pass 
    .user_nicename 
    ,user_email 
    ,display_name 
) VALUES (
    in_userlogin -- username - IN varchar(50) 
    -- email - IN varchar(50) 
    ,MD5(in_userpass) -- passwd - IN blob , 
    ,in_usernicename 
,in_useremail 
,in_displayname 
); 
else 
    leave proc_main; 
end if; 
set ID:=LAST_INSERT_ID(); 

select ID, user_login, user_pass, user_nicename, user_email, display_name 
     from prod_huselbrand_db.wp_users where ID = ID; 

end; 
END proc_main