Mysql процедура ничего не делает и без ошибок - PullRequest
0 голосов
/ 20 июня 2019

Моя основная задача - применить if if else в sql query, чтобы я мог проверить, есть ли у пользователя admin обновление пароля для пользователя admin, и если нет пользователя admin, создайте этого пользователя admin с помощью скрипта.приведенный выше фрагмент, если код предназначен для magento 1.9

Мне нужно выполнить эту операцию с помощью mysql

delimiter //

create procedure admin_user() 

begin

set @isAdmin := (select count(*) from admin_user where username = 'admin');

-- Only insert rows if the platform was found
if @isAdmin is not null then 

    UPDATE admin_user SET password = '49ecf011a4046493514c9d43bbfdd6e6:Sm4AZH3YkKQP9NEG0XRaUJfFiJxfYPeN' WHERE username = 'admin';

else

    set @salt := 'ls';
    set @pass := CONCAT(MD5(CONCAT( @salt , "admin123") ), CONCAT(":", @salt ));

    INSERT INTO `admin_user` (firstname, lastname, email, username, password, created, lognum, reload_acl_flag, is_active, extra, rp_token, rp_token_created_at)
    VALUES ('admin', 'dev', 'admin@bamba.local', 'admin', @pass, NOW(), 0, 0, 1, 'N;',null,null);

    INSERT INTO `admin_role` (parent_id, tree_level, sort_order, role_type, user_id, role_name) 
    VALUES (0, 1, 0 , 'G', 0, 'Development');

    set @role_id := (SELECT role_id from admin_role where role_name='Development');

    INSERT INTO `admin_rule` (role_id, resource_id, privileges, assert_id, role_type, permission)
    VALUES (@role_id, 'all', null, 0, 'G', 'allow');

    INSERT INTO `admin_role` (parent_id, tree_level, sort_order, role_type, user_id, role_name)
    VALUES (@role_id, 2, 0, 'U', (SELECT user_id FROM admin_user WHERE username = 'admin'), 'admin');

end if;

   end;

//

delimiter ;

-- Execute the procedure
call admin_user();

-- Drop the procedure
drop procedure admin_user;

Когда запрос работает в условиях выполнения, его запрос скажем выполнил 0 строк.Не получить никаких результатов

1 Ответ

1 голос
/ 20 июня 2019

Вы можете использовать эту процедуру. Когда вы запускаете эту процедуру, она показывает следующее сообщение: «MySQL возвратил пустой набор результатов (т. Е. Ноль строк). (Запрос занял 0,0005 секунд.)», Но когда вы открываете admin_user и другие таблицы, он обновляет или вставьте значение в таблицы.

delimiter //
create procedure admin_user() 

begin

DECLARE isADMINDATA INT;
select count(*) from admin_user where username = 'admin' INTO isADMINDATA;

if isADMINDATA=0 THEN

    set @salt := 'ls';
    set @pass := CONCAT(MD5(CONCAT( @salt , "admin123") ), CONCAT(":", @salt ));

    INSERT INTO `admin_user` (firstname, lastname, email, username, password, created, lognum, reload_acl_flag, is_active, extra, rp_token, rp_token_created_at)
    VALUES ('admin', 'dev', 'admin@bamba.local', 'admin', @pass, NOW(), 0, 0, 1, 'N;',null,null);
    INSERT INTO `admin_role` (parent_id, tree_level, sort_order, role_type, user_id, role_name) 
    VALUES (0, 1, 0 , 'G', 0, 'Development');

    set @role_id := (SELECT role_id from admin_role where role_name='Development');

    INSERT INTO `admin_rule` (role_id, resource_id, privileges, assert_id, role_type, permission)
    VALUES (@role_id, 'all', null, 0, 'G', 'allow');

    INSERT INTO `admin_role` (parent_id, tree_level, sort_order, role_type, user_id, role_name)
    VALUES (@role_id, 2, 0, 'U', (SELECT user_id FROM admin_user WHERE username = 'admin'), 'admin');

else

  UPDATE admin_user SET password = '49ecf011a4046493514c9d43bbfdd6e6:Sm4AZH3YkKQP9NEG0XRaUJfFiJxfYPeN' WHERE username = 'admin';

end if;
   end;
...