Mysql Phpmyadmin中的写入过程出错
我试图在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
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;