从PHP连接到Oracle数据库

我有一个我想连接的Oracle数据库。</ p>

出于某种原因,当我尝试以下代码时:</ p>

 &lt;?php 
include“header.php”;
//只是尝试连接到数据库
/ 如果要连接到Oracle数据库,凭据如下:
*用户名:
*******
密码:*******
主机名:* ********
端口:1521
*服务名称:
**********
  • /
    $ oracleConnect = true;
    if($ oracleConnect)\ n {
    echo'Impmpting connection ...&lt; br&gt;';
    $ connection = null;
    尝试
    {
    $ connection = oci_connect('user',
    'pass',
    ' user @ // hostname:1521 / dbname');
    }
    catch(Exception $ e)
    {
    echo $ e-&gt; getMessage();
    }
    if(!$ connection)\ n {
    echo'&lt; p&gt;出了点问题。&lt; / p&gt;';
    $ e = oci_error();
    trigger_error(htmlentities($ e ['message'],ENT_QUOTES),E_USER_ERROR);
    }
    //如果连接已建立
    else
    {
    // tell 用户并关闭它(这是一个测试)
    echo'Connection established !!';
    oci_close($ connection);
    }
    }
    else
    {
    $ connection = new mysqli(' 主机','用户','密码','数据库');
    echo($ connection)? '数据库连接成功!' :'无法连接。';
    }
    包含“footer.php”;
    ?&gt;
    </ code> </ pre>

    当我尝试上面的代码时,我 得到“尝试连接...”打印,但没有别的。 它应该打印其他东西,无论如何。 什么可能出错?</ p>
    </ div>

展开原文

原文

I have an Oracle database that I am trying to connect to.

For some reason when I try the following code:

<?php
    include "header.php";
    // simply attempt to connect to the database
    /* If you are connecting to the Oracle database, the credentials are as follows: 
     * Username: ********
     * Password: ********
     * Hostname: **********
     * Port: 1521
     * Service name: ***********
    */
    $oracleConnect = true;
    if ($oracleConnect)
    {
        echo 'Attempting connection...<br>';
        $connection = null;
        try
        {
            $connection = oci_connect('user',
                'pass',
                'user@//hostname:1521/dbname');
        }
        catch (Exception $e)
        {
            echo $e->getMessage();
        }
        if (!$connection)
        {
            echo '<p>Something is wrong.</p>';
            $e = oci_error();
            trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
        }
        // if the connection has been established
        else
        {
            // tell the user and close it (this is a test)
            echo 'Connection established!!';
            oci_close($connection);
        }
    }
    else
    {
        $connection = new mysqli('host', 'user', 'password', 'database');
        echo ($connection) ? 'Database connection successful!' : 'Could not connect.';
    }
    include "footer.php";
?>

When I try the above code, I get the "Attempting connection..." to print, but nothing else. It is supposed to print something else regardless. What could possibly be going wrong?

douzi115522
douzi115522 在尝试中回应一些东西以确保进入该过程。在打开<?phptagerror_reporting(E_ALL)之后立即将错误报告添加到文件的顶部;ini_set('display_errors',1);
接近 6 年之前 回复

1个回答



我认为问题是连接字符串的 user @ </ code>部分。 我不认为这是必要的,因为 oci_connect </ code>有一个用户名参数。 我可能是错的,我以前从未使用过PHP的oracle,但有关oci连接的文档 似乎也表明:</ p>


要使用Easy Connect命名方法,PHP必须与Oracle 10g或更高版本的客户端库链接。 Oracle 10g的Easy Connect字符串格式为:[//] host_name [:port] [/ service_name]。 从Oracle 11g开始,语法为:[//] host_name [:port] [/ service_name] [:server_type] [/ instance_name]。 可以通过在数据库服务器计算机上运行Oracle实用程序lsnrctl状态来找到服务名称。</ p>
</ blockquote>

oci_connect </ code>也不会抛出异常 据我所知,所以你的try / catch是无用的,除非你计划在返回 false </ code>时自己投掷。</ p>
</ div>

展开原文

原文

I think the problem is the user@ part of your connection string. I dont think thats necessary as oci_connect has a user name parameter. I could be wrong, ive never used oracle from php before, but the docs on oci connections would also seem to indicate that:

To use the Easy Connect naming method, PHP must be linked with Oracle 10g or greater Client libraries. The Easy Connect string for Oracle 10g is of the form: [//]host_name[:port][/service_name]. From Oracle 11g, the syntax is: [//]host_name[:port][/service_name][:server_type][/instance_name]. Service names can be found by running the Oracle utility lsnrctl status on the database server machine.

Also oci_connect does not throw an exception as far as i can tell so your try/catch is useless unless you planned on throwing your own when it returns false.

dsadsadsa1231
dsadsadsa1231 啊,你一定不能安装oci扩展。
接近 6 年之前 回复
duanbo6871
duanbo6871 oci_connect()是“未定义的”! 致命错误:在第17行的/home1/biokddor/public_html/dinotator/ResearchProject/dbConnect.php中调用未定义的函数oci_connect()
接近 6 年之前 回复
dqellle310167
dqellle310167 打开display_errors,如@JayBlanchard在他的评论中建议的那样,看看是否有任何...当没有连接时尝试print_r($ e)而不是你的格式只是为了看...你可能有些东西搞砸了。 因为它永远不会成为页脚的包含...意味着有一个错误就是停止处理。 这是最有可能的地方。
接近 6 年之前 回复
dousui4577
dousui4577 好的,所以我拿出了用户@part,以及try / catch块,它仍然不起作用! 这是测试网站:dinotator.biokdd.org/ResearchProject/dbConnect.php
接近 6 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐