2014-02-15 89 views
0

我正在使用如下的msql函數。如何從MySQL函數訪問PHP中的返回值

CREATE FUNCTION `check_login`(p_username VARCHAR(30),p_password VARCHAR(30),role VARCHAR(20)) 
RETURNS BOOL 
deterministic 
    BEGIN 
    DECLARE retval INT; 
    Declare cid int; 
      IF role = "customer" THEN 

       select convert(p_username,unsigned integer)into cid; 
       SELECT COUNT(custid) INTO retval FROM customer WHERE custid = cid and pwd = p_password; 
       IF retval != 0 THEN 
        RETURN TRUE;  
       ELSE 
        RETURN FALSE;       
       END IF; 
      END IF; 
    END$$ 
DELIMITER ; 

並使用以下php代碼。

$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword']; 
$role=$_POST['role']; 
$sql="select check_login('$myusername','$mypassword','$role')"; 
$result=mysql_query($con, $sql); 
$row=mysql_result($row,1); 
echo $row[1]; 

但是我無法獲得返回值。

+0

**注意:**您的儲存功能並非真正的「確定性」。 – BlitZ

+0

您可以使用PDO,預準備語句的準備語句和bindValue()方法。 –

回答

0

正如另一條評論所述,您應該使用不同的MySQL適配器(PDO或mysqli)。但是,如果必須保持適配器的原樣,則應將「mysql_result($ row,1)」更改爲「mysql_result($ row,0)」,因爲查詢的結果從零開始索引。或者,您可以爲派生列指定名稱,並使用「mysql_fetch_assoc」返回關聯數組。

相關問題