1.安装oracle客户端,不管是32位还是64位;当系统是32位的时候,要装32位的客户端,PL/SQL才能给连上数据库
2.php.ini中对应的oracle相关扩展打开。php_openssl.dll,php_oci8.dll,如果装的是11g的话,不打开php_oci8.dll,而是php_oci8_11g.dll。如果有php_oracle.dll的话,就打开。
3.写个测试代码进行连接测试,如下:
$dbconn = oci_connect('test','test',"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.21.1.11)(PORT=1521))(CONNECT_DATA=(SID=orcl)))");
if ($dbconn) {
echo '连接成功';
}else {
echo '连接失败';
}
注意:每次修改都重启哈apache服务。
如果报错,找不到oci_connect方法,则说明phpinfo中没有找到oci8扩展信息,则需要将oracle客户端下的响应的dll拷贝到apache的bin目录下。例如,我装的是oracle 11g的,那么拷贝的dll文件是instantclient_11_2目录下的oci.dll,orannzsbb11.dll,oraociei11.dll;
如果继续报错Warning: oci_connect(): OCIEnvNlsCreate() failed. There is something wrong with ......library,则说明需要为oracle客户端配置响应的环境变量
Path(在变量中加入) D:\oracle instantclient
LD_LIBRARY_PATH D:\oracle instantclient
NLS_LANG SIMPLIFIED CHINESE_CHINA.ZHS16GBK
ORACLE_HOME D:\oracle instantclient
SQL_PATH D:\oracle instantclient
TNS_ADMIN D:\oracle instantclient
如果安装了oarcle服务端,则将tnsnames.ora文件拷贝到instantclient目录下,没有的话,就想办法让instantclient目录下有tnsnames.ora文件。
可使用直接源代码之,,,
$dbstr ="(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.0.8)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
(INSTANCE_NAME = orcl)))";
//phpinfo();
$conn = oci_connect('yx','123',$dbstr);//如果去掉最后一个参数或者为“ ”,默认连接本机
//$conn = oci_connect('username','password','192.168.0.8/yx');
if (!$conn)
{
$Error = oci_error();
print htmlentities($Error['message']);
exit;
}
else
{
echo "Connected Oracle Successd~连接成功~"."
";
//ocilogoff($conn);
}
$stmt = oci_parse($conn, "select * from bshrp.zy_brry");
oci_execute($stmt);
$nrows = oci_fetch_all($stmt, $results);
if ($nrows > 0) {
echo "
echo "
\n";foreach ($results as $key => $val) {
echo "
$key\n";}
echo "
\n";for ($i = 0; $i < $nrows; $i++) {
echo "
\n";foreach ($results as $data) {
echo "
$data[$i]\n";}
echo "
\n";}
echo "
\n";} else {
echo "No data found
\n";
}
echo " $nrows Records Selected
\n";
oci_free_statement($stmt);
oci_close($conn);/**/
?>