Hi Hans, Thks for the reply.
I have double checked and the table I am testing with (KB_TEST) has one field and it is VARCHAR(25). I believe the oci_parse() is working since I'm not "dieing" with an error message and the code gets to the oci_bind_by_name(). To your point that this "oci_bind_by_name ($stmt, ":TESTNAME", "ERIC");" should work - I do not get the oracle error when run this statment, I get a PHP fatal error: Only variables can be passed by reference. This makes no sense to me either. I get the oracle error when I run; $val = 'ERIC'; $bindVar = ':TESTNAME'; oci_bind_by_name ($stmt, $bindVar, $val) So I just added some primitive type checking on the variables I'm passing to the bind and confirmed that $stmt is a resource, $val and $bindVar are strings. I'm using is_string() and is_resource(). As to the ditching the "$insSQL = strtoupper($insSQL);"; I only added it because I was running out of ideas and I know ORACLE like to work with upper case (you can use mixed case but it is not fun). Eric SolutionOne Eric Gewirtz 162 Turk Hill Road Brewster NY, 10509 Phone: 845-729-7800 FAX: 845-279-5502 >-----Original Message----- >From: talk-boun...@lists.nyphp.org [mailto:talk-boun...@lists.nyphp.org] On >Behalf Of Hans Zaunere >Sent: Wednesday, July 01, 2009 11:04 AM >To: 'NYPHP Talk' >Subject: Re: [nyphp-talk] oci8 bind error > >Hello, > >> Warning: oci_bind_by_name(): ORA-01036: illegal variable name/number in >> /appl/wideacc/CustMast/in/OCIpreptest.php on line 23 > > >> Below is the test code I'm running; >> >> >> //Connect to the Database >> $dbUser = 'c1'; >> $dbPSWD = p1'; >> $db = 'db1'; >> $con = oci_connect($dbUser, $dbPSWD, $db); >> if (!$con) die ('Connect to DB failed'); >> //$insSQL = 'INSERT INTO KB_TEST (TESTNAME) VALUES (:TESTNAME)'; >> $insSQL = "INSERT INTO KB_TEST VALUES (:TESTNAME)"; >> $insSQL = strtoupper($insSQL); // upper case since ORACLE prefers upper > >I'd ditch this... > >> and we know we do not have a case issue >> echo "SQL is $insSQL \n"; >> $stmt = oci_parse($con, $insSql); >> if (!$stmt) die ('Parse for insert failed'); >> >> //oci_bind_by_name ($stmt, ":TESTNAME", "ERIC"); > >This one seems as though it should work - are you sure the oci_parse() is >successful and that the first column in that table is really a varchar? > >H > > >_______________________________________________ >New York PHP User Group Community Talk Mailing List >http://lists.nyphp.org/mailman/listinfo/talk > >http://www.nyphp.org/show_participation.php _______________________________________________ New York PHP User Group Community Talk Mailing List http://lists.nyphp.org/mailman/listinfo/talk http://www.nyphp.org/show_participation.php