Mysql Phpmyadmin中的写入过程出错

Mysql Phpmyadmin中的写入过程出错,mysql,sql,stored-procedures,phpmyadmin,Mysql,Sql,Stored Procedures,Phpmyadmin,我试图在Mysql phpmyadmin中编写一个存储过程,该过程是 DELIMITER $$ DROP FUNCTION IF EXISTS `shopping_portal`.`f_authenticate_admin`$$ CREATE PROCEDURE =`root`@`localhost` FUNCTION `f_authenticate_admin`(l_username VARCHAR(50),l_password VARCHAR(50)) RETURNS int(11) BE

我试图在Mysql phpmyadmin中编写一个存储过程,该过程是

DELIMITER $$

DROP FUNCTION IF EXISTS `shopping_portal`.`f_authenticate_admin`$$
CREATE PROCEDURE =`root`@`localhost` FUNCTION `f_authenticate_admin`(l_username VARCHAR(50),l_password VARCHAR(50)) RETURNS int(11)
BEGIN
    DECLARE exist INT DEFAULT 0;
    SELECT count(*) INTO exist FROM admin WHERE username=l_username and password=MD5(l_password);
    RETURN exist;
END$$

DELIMITER ;
但它正在抛出错误

 #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 '=`root`@`localhost` FUNCTION `f_authenticate_admin`(l_username VARCHAR(50),l_pas' at line 1 
帮我写这个程序。提前感谢。

嗯,多个问题:

你在混合过程和函数,这是两个不同的故事。你可能正在用你的=root@localhost. 你想用单引号而不是反勾号,我不确定这是否真的是个问题。不管怎样,让我给你重写一下

DROP PROCEDURE IF EXISTS `shopping_portal`.`f_authenticate_admin`;
DELIMITER $$

CREATE DEFINER = 'root'@'localhost' PROCEDURE `f_authenticate_admin`(IN l_username VARCHAR(50), IN l_password VARCHAR(50), OUT result tinyint) 
BEGIN
    SELECT EXISTS(SELECT 1 FROM admin WHERE username=l_username and password=MD5(l_password)) INTO result;
END$$

DELIMITER ;
你可以这样称呼它:

CALL f_authenticate_admin('test_username', 'a_password', @a_variable);
然后在@a_变量中得到结果


结果是1或0。

好吧。。。你真的读到错误信息了吗?它指出了错误所在:='root'@'localhost'这与PHP无关。正在删除标记。。。
SELECT @a_variable;