PHP: соединение SQL в файле 1, функции SQL в файле 2 не работают

0

У меня есть файл 1 под названием init.php который содержит данные 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");
?>

У меня есть файл 2 с именем functions.php который содержит функции SQL:

<?php
function is_accessible($a, $b) {
    $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;
    }
}

function ...
?>

Файл functions.php, похоже, не хочет использовать соединение, которое у меня есть в init.php, почему это?

Если я поместил SQL-соединение непосредственно в функцию is_accessible он будет работать.

  • 3
    Попробуйте передать переменную соединения в функцию; это, скорее всего, проблема сферой.
  • 0
    «Если я помещаю SQL-соединение непосредственно в функцию is_accessible тогда это работает». - Тогда это то, что вы должны сделать, как я уже говорил выше. Это проблема сферы. Попробуйте и не используйте глобальный, хотя; многие многие многие думают, что это плохая идея, просто говорю .
Показать ещё 1 комментарий
Теги:

1 ответ

1
Лучший ответ

Вы должны использовать 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;
    }
}

и не забудьте запустить свою функцию

Ещё вопросы

Сообщество Overcoder
Наверх
Меню