FW: PHP3 & OCI8 Example
| From: | Gustafson, Mårten | Date: | Fri, 19 May 2000 08:47:12 +0000 |
| Subject: | FW: PHP3 & OCI8 Example | ||
| Groups: | php.db | ||
| Request: | Send a blank email to php-db+get-47@lists.php.net to get a copy of this message | ||
This shows how to run stored ORACLE PL/SQL procedures form PHP. Hope this
helpes.
The procedure performs username/passoword verification
against an Oracle DB (it´s stored in a package named "auth"):
____________________________________________________________________________
______
END_PROCEDURE EXCEPTION;
PROCEDURE dologin
(
inUsername IN users.username%TYPE,
inPassword IN users.password%TYPE,
returStatus OUT NUMBER
) IS
CURSOR cur_Password(username IN users.username%TYPE,
password IN users.password%TYPE) IS
SELECT userid
FROM users
WHERE username = LOWER(username) AND password = password;
rec_Password cur_Password%ROWTYPE;
BEGIN
OPEN cur_Password(inUsername, inPassword);
FETCH cur_Passoword INTO rec_Password;
IF cur_Password%NOTFOUND THEN
CLOSE cur_Password;
returnStatus := -1;
RASIE END_PROCEDURE;
END IF;
returnStatus := 1;
CLOSE cur_Password;
EXCEPTION
WHEN END_PROCEDURE THEN
NULL;
END dologin;
____________________________________________________________________________
______
Then we have the PHP function that calls the procedure:
function login($username, $password, $db_connection)
{
$query = OCIParse($db_connection, "BEGIN
auth.login(:username, :password, :return_status); END;");
OCIBindByName($query, ':username', &$username, strlen($username));
OCIBindByName($query, ':password', &$password, strlen($password));
OCIBindByName($query, ':return_status', &$return_status, 10);
OCIExecute($query);
if($return_status==1)
{
return true;
}
else
{
return false;
}
}
Hope this helpes
--Marten