I am creating a online system using PHP and Oracle OCI8.
Anyone here have encountered the error:
Warning: oci_bind_by_name() [function.oci-bind-by-name]: Error while trying to retrieve text for error ORA-01036 in dbcontrol.php on line 50
Success
Here is my dbcontrol.php:
function plsql_insert($plsql, $array){
$this -> connect(); //Create Database Connection
$this -> statement = oci_parse($this -> conn, $plsql); //Prepare the statement to call PL/SQL stored procedure
foreach ($array as $key => $value){
oci_bind_by_name($this -> statement, $key, $array[$key]);
}
$this -> execute = oci_execute($this -> statement); //Execute the statement
$this -> result = ($this -> execute) ? "Success" : "Failed";
return $this->result;
}
Here is my code that calls for that function:
include "../dbaseconn/dbcontrol.php";
extract($_GET);
$personalBackground = explode(",",$personalBackground);
$arrPersonal = array();
foreach($personalBackground as $val)
{
$tmpData = explode("*",$val);
$arrPersonal[$tmpData[0]]=$tmpData[1];
}
$arrPersonal[':REC_NO'] = '4';
$plsql = "call TEST.INSERT_BACK_PERSONAL(:NAME_LAST,:NAME_FIRST,:NAME_MIDDLE,:PRESENT_ADDRESS,:MOBILE_PHONE,:PERMANENT_ADDRESS,:HOME_NUMBER,:DATE_OF_BIRTH,:BIRTH_PLACE,:CIVIL_STATUS,:SSS_NO,:TIN,:PHILHEALTH_NO,:HDMF_NO,:BLOOD_TYPE,:GENDER,:GOV_LICENSE,:EMAIL_ADDRESS,:REC_NO)";
$dbcontrol = new DbControl;
echo $dbcontrol->plsql_insert($plsql,$arrPersonal);
And my PL/SQL Block:
CREATE OR REPLACE PACKAGE BODY RECRUIT.TEST AS
PROCEDURE INSERT_BACK_PERSONAL( v_NAME_LAST IN VARCHAR2,
v_NAME_FIRST IN VARCHAR2,
v_NAME_MIDDLE IN VARCHAR2,
v_PRESENT_ADDRESS IN VARCHAR2,
v_MOBILE_PHONE IN VARCHAR2,
v_PERMANENT_ADDRESS IN VARCHAR2,
v_HOME_NUMBER IN VARCHAR2,
v_DATE_OF_BIRTH IN CHAR,
v_BIRTH_PLACE IN CHAR,
v_CIVIL_STATUS IN CHAR,
v_SSS_NO IN VARCHAR2,
v_TIN IN VARCHAR2,
v_PHILHEALTH IN VARCHAR2,
v_HDMF_NO IN VARCHAR2,
v_BLOOD_TYPE IN VARCHAR2,
v_GENDER IN CHAR,
v_GOV_LICENSE IN VARCHAR2,
v_EMAIL_ADDRESS IN VARCHAR2,
v_REC_NO IN VARCHAR2
)
--out_data out CV_TYPE
IS
BEGIN
INSERT INTO RECRUIT.BACK_PERSONAL (REC_NO, NAME_LAST,NAME_FIRST, NAME_MIDDLE,
PRESENT_ADDRESS, MOBILE_PHONE, PERMANENT_ADDRESS,
HOME_NUMBER, DATE_OF_BIRTH, BIRTH_PLACE, CIVIL_STATUS,
SSS_NO, TIN, PHILHEALTH_NO, HDMF_NO,
BLOOD_TYPE, GENDER, GOV_LICENSE, EMAIL_ADDRESS, INSERTDATE)
VALUES (v_REC_NO, v_NAME_LAST, v_NAME_FIRST, v_NAME_MIDDLE,
v_PRESENT_ADDRESS, v_MOBILE_PHONE, v_PERMANENT_ADDRESS,
v_HOME_NUMBER, v_DATE_OF_BIRTH, v_BIRTH_PLACE, v_CIVIL_STATUS,
v_SSS_NO, v_TIN, v_PHILHEALTH, v_HDMF_NO,
v_BLOOD_TYPE, v_GENDER, v_GOV_LICENSE, v_EMAIL_ADDRESS, SYSDATE
);
commit;
END INSERT_BACK_PERSONAL;
As I try this, I can successfully insert into my database but I am having that warning: ORA-01036. which is kinda annoying.
How to solve this issue?
please visit This Answer it is same which you want...It is just direct written PL/SQL block instead of call procedure....
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.