如何从mysql函数访问php中的返回值

时间:2014-02-15 10:22:38

标签: php mysql function

我正在使用sql函数,如下所示。

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];

但我无法获得返回值。

2 个答案:

答案 0 :(得分:0)

如另一条评论中所述,您应该使用不同的MySQL适配器(PDO或mysqli)。但是,如果必须按原样保留适配器,则应将“mysql_result($ row,1)”更改为“mysql_result($ row,0)”,因为查询结果从零开始编制索引。或者,您可以为派生列分配名称,并使用“mysql_fetch_assoc”返回关联数组。

答案 1 :(得分:-1)

$sql = 'SELECT check_login(\'$myusername\', \'$mypassword\', \'$role\')';

$vars = array(
   '$myusername' => $_POST['myusername'],
   '$mypassword' => $_POST['mypassword'],
   '$role' => $_POST['role']
);

$queryResult = $conn->query(strtr($sql, $vars));

$return = $queryResult->fetch_assoc();

foreach ($return as $return=> $functionReturn) {
   $return = $functionReturn;
}

echo $return;