Попытка вызова процедуры MYSQL для возврата значения int на основе условия в php - PullRequest
0 голосов
/ 05 августа 2011

Я пытаюсь создать процедуру SQL, которая возвращает указанное значение из таблицы членов.

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 Ответ

1 голос
/ 05 августа 2011

создать процедуру SQL, где is возвращает указанное значение

Вот твоя самая большая проблема. Процедуры не возвращают значения. Функции возвращают значения. OTOH вы можете передавать ссылки на переменные в качестве аргументов как процедур, так и функций - и процедура / функция может изменить значение.

это началось как функция, прежде чем я узнал, что php не может вызывать функции sql

Кто тебе это сказал? Это полная чушь.

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

Полагаю, вы избежали и указали эти переменные в кавычках.

Измените ПРОЦЕДУРУ на ФУНКЦИЮ, затем вызовите его как ....

SELECT ConfirmMember($username,$password)
...