У меня есть файл 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
он будет работать.
Вы должны использовать 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;
}
}
и не забудьте запустить свою функцию
is_accessible
тогда это работает». - Тогда это то, что вы должны сделать, как я уже говорил выше. Это проблема сферы. Попробуйте и не используйте глобальный, хотя; многие многие многие думают, что это плохая идея, просто говорю .