试图调用MYSQL过程将基于Condition的int值返回给php

时间:2011-08-05 04:51:37

标签: php mysql integer return procedure

我正在尝试创建一个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函数,它为什么它仍然在底部返回并且还得到了我想要返回值的点。

1 个答案:

答案 0 :(得分:1)

  

创建一个SQL过程,其中返回指定的值

这是你最大的问题。程序不返回值。函数返回值。 OTOH你可以在程序和函数中将变量的引用作为参数传递 - 而过程/函数可以改变值。

  

这是在我学会了php无法调用sql函数之前的一个函数

谁告诉过你的?这完全是胡说八道。

  

$ result = $ mysqli-> query(“Call ConfirmMember($ username,$ password)”);

我假设您已经转义并引用了这些变量。

将PROCEDURE更改为FUNCTION,然后将其调用为....

SELECT ConfirmMember($username,$password)