如何在另一个文件中从php调用oracle函数?
请不要将它标记为重复,因为我已经尝试了所有的解决方案,但没有得到我真正想要的 下面是我的querys.php如何在另一个文件中从php调用oracle函数?,php,oracle,function,Php,Oracle,Function,请不要将它标记为重复,因为我已经尝试了所有的解决方案,但没有得到我真正想要的 下面是我的querys.php class Queries { public static function getNames($name=":name") { $dbUser = "..."; $dbPass = "..."; $dbConn = "(DESCRIPTION = (ADDRESS = (PROTOCOL=TCP)(HOST=)(PORT=))(CONN
class Queries {
public static function getNames($name=":name") {
$dbUser = "...";
$dbPass = "...";
$dbConn = "(DESCRIPTION = (ADDRESS = (PROTOCOL=TCP)(HOST=)(PORT=))(CONNECT_DATA=(SID=)))";
$conn = oci_connect($dbUser, $dbPass, $dbConn);
$sql = oci_parse($conn, "SELECT NAME FROM USERS GROUP BY NAME");
oci_bind_by_name($sql, ':name', $name);
oci_execute($sql);
$results = array();
while ( false!==($row=oci_fetch_all($sql)) ) {
$results[ $row[$name] ] = $row;
}
return $results;
}
profile.php
<?php
error_reporting(E_ALL);
$name = filter_input(INPUT_GET, 'NAME');
require_once './pages/header.php';
require_once './queries.php';
$department = Queries::getNames($name);
?>
<div class="container">
<div class="panel panel-default">
<div class="panel-body">
<form class="cmxform" id="selectdept" method="POST">
<legend></legend>
<label for="department"></label>
<select class="form-control" name="Id" id="Id">
<option selected disabled></option>
<?php
for ($i = 0; $i < count($department); $i++) {
echo '<option value="' . $department[$i]['NAME'] . '">' . $department[$i]['NAME'] . '</option>';
}
?>
</select>
</form>
<br>
<br>
</div>
</div>
</div>
<?php
require_once './pages/footer.php';
?>
在这里,我想在for循环中调用querys.php中的函数。这对我来说毫无意义 您对
oci\u fetch\u all
的工作原理做出了错误的假设。读取显示它需要两个参数,一个语句对象和一个用于存储结果的数组变量
重复已有的结果是没有意义的,因为您应该只调用一次函数来接收所有行。正如您所写的,PHP将进入一个无限循环,因为oci\u fetch\u all
永远不会返回布尔值false
您还没有在SQL查询中包含:name
占位符
PHP错误日志应该充满警告,所以,一如既往,检查这应该是调试的第一步
class Queries {
public static function getNames($name=":name") {
$dbUser = "...";
$dbPass = "...";
$dbConn = "(DESCRIPTION = (ADDRESS = (PROTOCOL=TCP)(HOST=)(PORT=))(CONNECT_DATA=(SID=)))";
$conn = oci_connect($dbUser, $dbPass, $dbConn);
$sql = oci_parse($conn, "SELECT NAME FROM USERS WHERE NAME = :name GROUP BY NAME");
oci_bind_by_name($sql, ':name', $name);
oci_execute($sql);
$results = array();
oci_fetch_all($sql, $results, 0, -1, OCI_FETCHSTATEMENT_BY_ROW);
return $results;
}
}
获取此错误:PHP致命错误:未捕获错误:调用/home/web/querys.PHP:13\n堆栈跟踪:\n#0/home/web/profile.PHP(17):querys::getNames(':name')\n#1{main}\n在第13行的/home/web/querys.PHP中抛出,
prepare()
在本页问题和答案的任何代码中。检查/home/web/querys.php
的第13行。它似乎不是您粘贴到这里的代码的一部分;profile.php中的第17行是$department=querys::getNames(':name');线路。