アプリケーション pl/sql を開発するのは初めてで、パラメーターを php pl/sql に渡すのに苦労しています。関数 PL / SQL は既にデータベースに作成されており、次のクエリを実行すると、当然のパラメーターが返されます。
BEGIN
PIN_USERNAME := 'admin';
PIN_PASSWD := '1';
POUT_MESSAGE := NULL;
RetVal := PKG_LOGIN.LOGIN_PORTAL ( PIN_USERNAME, PIN_PASSWD, POUT_MESSAGE );
DBMS_OUTPUT.PUT_LINE('PIN_USERNAME='||PIN_USERNAME);
DBMS_OUTPUT.PUT_LINE('PIN_PASSWD='||PIN_PASSWD);
DBMS_OUTPUT.PUT_LINE('POUT_MESSAGE='||POUT_MESSAGE);
COMMIT;
END;
今問題は、私はphpで同じことをすることができないということです. Googleの助けを借りて開発したphpのコードは次のとおりです。
include 'define.php';
require_once '../config/connectDB.php';
if(isset($_POST['user']) && isset($_POST['senha']))
{
$utilizador = $_POST['user'];
$senha = $_POST['senha'];
$msg;
//Connection database
if(!ligacaoDB())
{
echo "Dont Connect";
}
$query = "begin :r := PKG_LOGIN.LOGIN_PORTAL (:1, :2, :3); commit; end;";
$result = oci_parse(ligacaoDB(), $query);
oci_bind_by_name($result, ":1", $utilizador);
oci_bind_by_name($result, ':2', $senha);
oci_bind_by_name($result, ':3', $msg);
oci_bind_by_name($result, ':r', $r);
$xpto = oci_execute($result);
if($xpto == false)
{
$e = oci_error($result);
print htmlentities($e['message']);
}
else
{
echo $msg . " | " . $r;
}
oci_free_statement($result);
oci_close(ligacaoDB());
}
私が理解している plsql 関数から、このパラメーターは を受け取り、データベースがおよびで表されたメッセージとブール値を返すかどうかuser
をチェックします。password
msg
r
誰かが私を助けて、誰が間違っているのか説明してくれますか?