PHP:SQL连接在文件1中,SQL函数在文件2中不工作

PHP:SQL连接在文件1中,SQL函数在文件2中不工作,php,Php,我有一个名为init.php的文件1,其中包含SQL详细信息和SQL连接: <?php $sql = array( 'user' => 'user', 'password' => 'pass', 'server' => '192.168.100.1', 'db' => 'XE' ); $conn = oci_connect($sql['user'], $sql['password'], $sql['serv

我有一个名为
init.php
的文件1,其中包含SQL详细信息和SQL连接:

<?php
$sql = array(
    'user'     => 'user',
    'password' => 'pass',
    'server'   => '192.168.100.1', 
    'db'       => 'XE'
);

$conn = oci_connect($sql['user'], $sql['password'], $sql['server'].'/'.$sql['db']);

if (!$conn) {
    $e = oci_error();
    trigger_error( htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR );
}


include("functions.php");
?>
functions.php
文件似乎不想使用我在
init.php
中的连接,这是为什么


如果我将SQL连接直接放入
is\u accessible
函数中,那么它就可以工作。

您应该使用global在函数中定义您的连接

function is_accessible($a, $b) {
    global $conn;
    $stid = oci_parse($conn, "select c1 from t1 where o1 = $a");

    oci_execute($stid);

    $row = oci_fetch_array($stid, OCI_NUM);

    if ($row['0'] == $b) {
        return true;
    } else {
        return false;
    }
}

不要忘记运行函数

尝试将连接变量传递给函数;这很可能是一个范围问题。“如果我将SQL连接直接放在
is\u accessible
函数中,那么它就工作了。”-那么这就是您必须做的,正如我上面所说的。这是一个范围问题。尽量不要使用全局;很多人认为这是一个坏主意,只是说。但我不想在100+函数中有一个巨大的连接块?
function is_accessible($a, $b) {
    global $conn;
    $stid = oci_parse($conn, "select c1 from t1 where o1 = $a");

    oci_execute($stid);

    $row = oci_fetch_array($stid, OCI_NUM);

    if ($row['0'] == $b) {
        return true;
    } else {
        return false;
    }
}