To connect to Oracle using PHP, the basic condition is
1. You need to install PHP,
2. Installation of Oracle,
3. The Tnsname.ora is configured.
The local command line uses Sqlplus to connect to Oracle.
Depending on the version of your machine, choose PHP for 64bit or 32bit, we use PHP's OCI8 extension to connect Oracle
After installing PHP, open the oci8 extension,
Write a ora.php code that connects to Oracle
Copy the Code code as follows:
$conn = Oci_connect (' hr ', ' welcome ', ' MYDB ');
if (! $conn) {
$e = Oci_error ();
Trigger_error (Htmlentities ($e [' message '], ent_quotes), e_user_error);
}
Prepare the statement
$stid = Oci_parse ($conn, ' SELECT * from departments ');
if (! $stid) {
$e = Oci_error ($conn);
Trigger_error (Htmlentities ($e [' message '], ent_quotes), e_user_error);
}
Perform the logic of the query
$r = Oci_execute ($stid);
if (! $r) {
$e = Oci_error ($stid);
Trigger_error (Htmlentities ($e [' message '], ent_quotes), e_user_error);
}
Fetch the results of the query
Print "
\ n "; while ($row = Oci_fetch_array ($stid, oci_assoc+oci_return_nulls)) {print"
\ n "; foreach ($row as $item) {print '
" . ($item!== null? htmlentities ($item, ent_quotes): ""). " | \ n "; } print "
\ n ";} Print "
\ n ";
Oci_free_statement ($stid);
Oci_close ($conn);
?>
Description
Oci_connect (' hr ', ' welcome ', ' MYDB ')
The first parameter is the user name of Oracle,
The second parameter is the Oracle password
The third parameter is the connection string name in the Tnsnames.ora
Execute under command line
Copy the Code code as follows: PHP ora.php
Prompt for the following error
Copy the Code code as follows:
PHP warning:php startup:unable to load Dynamic Library ' C:\php\php_oci8.dll '-%1 is not a valid WIN32 application. In Unknown on line 0
PHP Parse error:syntax error, unexpected ' "User" ' (t_constant_encapsed_string) in C:\Users\nginx\Desktop\oraclephpoci\ Oci.php on line 3
began to think that there is no election to the version, I am a 64-bit machine, the result is said to be Win32 program, a look at the literal hint, I reinstall the new 32bit program or error.
Check it out. We need to install the Oracle Instant Client when the following problem occurs in 32-bit like 64-bit migration.
Copy the Code code as follows:
Unable to load dynamic library ' C:\Program Files (x86) \php\ext\php_oci8_11g.dll ' –%1 is not a valid WIN32 application.
Warning oci_connect (): Ocienvnlscreate () failed. There is something wrong with your system-please check this PATH includes the directory with Oracle Instant Client Libra Ries
Oracle Instant Client, which is a program that can be used after decompression, does not need to be installed.
If you have an Oracle account, you can go to Oracle to download the corresponding version, (the registered user needs a bunch of information)
Http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
Troublesome classmates Use this address to download
http://eduunix.ccut.edu.cn/index2/database/Oracle%20Instant%20Client/
After download, unzip the package to C:\oracleinstantclient and add the path to the environment variable path
Re-executing PHP ora.php, "%1 is not a valid WIN32 application" error is not available, but will prompt
Copy the Code Code as follows: syntax error, unexpected t_constant_encapsed_string
Code is directly copied from the PHP website, the code has invisible characters, using notepad++ to view all characters, remove garbled.
Continue, this prompt,
Copy the Code code as follows:
PHP Fatal error:ora-12154:tns:could Not resolve the connect identifier specified in C:\USERS\NGINX\DESKTOP\AIRLINE\OCI.P HP on line 6
It seems that PHP did not find the location of Tnsnames.ora, time compared to rush, then I directly use the form of IP, specific format according to your information spelling Oci_connect the third parameter
ORACLE10 format: [//]host_name[:p Ort][/service_name]
ORACLE11 format: [//]host_name[:p Ort][/service_name][:server_type][/instance_name].
The specific PHP OCI connection string I use is:
Copy the code as follows: $conn = Oci_connect (' hr ', ' welcome ', '//www.php.net:1523/sycx ');
With the above information, and finally can produce results, but found out the results of the asked garbled, this problem is basically a coding mismatch.
PHP oci8 Chinese garbled solution, first query your Oracle database encoding use,
Copy the Code code as follows: Select Userenv (' language ') from dual;
The result is simplified Chinese_china. ZHS16GBK, set environment variables in PHP code
Copy the Code code as follows: Putenv ("Nls_lang=simplified Chinese_china. ZHS16GBK ");
Finally, PHP is able to connect to Oracle correctly.