registerWithCredentials() gespeicherte Prozedur

Lesezeit: 2 Minuten

Benutzer-Avatar
Grisel Gerveni

Ich habe eine gespeicherte Prozedur in MysQL für meine WordPress-Datenbank erstellt. Der Zweck dieses Verfahrens besteht darin, einen neuen Benutzer in der WordPress-Datenbank mit Anmeldeinformationen zu registrieren (user_login,user_pass,user_nicename,user_email,und displayname.) Die SQL-Syntax dieser Prozedur ist in Ordnung, aber wenn ich die Prozedur aufrufe, kann ich nichts als Antwort erhalten, etwas, das sagt, ob der neue Benutzer zur Datenbank hinzugefügt wurde. Ich weiß nicht, was das Problem ist, denn wenn ich nach dem Aufrufen der Prozedur in die Datenbank einchecke, sehe ich keine vorgenommenen Änderungen.

-- --------------------------------------------------------------------------------
-- 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

Benutzer-Avatar
Olsi Saqe

Ich denke, Sie müssen am Ende Ihres Codes eine Auswahl treffen, damit Sie etwas aus Ihrer gespeicherten Prozedur ausgeben können. In Ihrem Fall würde ich die Daten des neu registrierten Benutzers ausgeben. Zum Beispiel:

-- --------------------------------------------------------------------------------
-- 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

1352420cookie-checkregisterWithCredentials() gespeicherte Prozedur

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy