我正在尝试创建一个SQL过程,其中从members表返回一个指定的值。
DELIMITER $$
DROP PROCEDURE IF EXISTS `qrgdev`.`ConfirmMember` $$
CREATE PROCEDURE `qrgdev`.`ConfirmMember` (
check_Username varchar(45),
check_Password varchar(255))
BEGIN
DECLARE intcheckId INTEGER(1);
DECLARE intAccessLevel INTEGER(1) DEFAULT 0;
SELECT id INTO intCheckId FROM members WHERE Username=Check_Username;
IF (intCheckId=0)
SELECT AccessLevel INTO intAccessLevel FROM members WHERE passwrd=check_Password;
ELSE
IF (intCheckId>0) THEN
Update members
Set LastSignIn=CURRENT_TIMESTAMP
Where ID=intCheckId;
SELECT AccessLevel INTO intAccessLevel FROM members WHERE id=intCheckId;
ELSE
Insert into members
(ID, Username, Administrator, Passwrd, LastSignIn)
values
(null, check_Username, 0, null, CURRENT_TIMESTAMP);
END IF;
END IF;
RETURN(intAccessLevel);
END $$
DELIMITER ;
这样我就可以根据该值设置php设置条件
//...
$result = $mysqli->query("Call ConfirmMember($username,$password)");
//...
这开始是一个函数之前我才知道php无法调用sql函数,它为什么它仍然在底部返回并且还得到了我想要返回值的点。
答案 0 :(得分:1)
创建一个SQL过程,其中返回指定的值
这是你最大的问题。程序不返回值。函数返回值。 OTOH你可以在程序和函数中将变量的引用作为参数传递 - 而过程/函数可以改变值。
这是在我学会了php无法调用sql函数之前的一个函数
谁告诉过你的?这完全是胡说八道。
$ result = $ mysqli-> query(“Call ConfirmMember($ username,$ password)”);
我假设您已经转义并引用了这些变量。
将PROCEDURE更改为FUNCTION,然后将其调用为....
SELECT ConfirmMember($username,$password)