连接到Oracle的PHP脚本适用于整数,但不适用于字符串,但该脚本适用于SQL_Developer

连接到Oracle的PHP脚本适用于整数,但不适用于字符串,但该脚本适用于SQL_Developer,php,sql,oracle,plsql,oracle-sqldeveloper,Php,Sql,Oracle,Plsql,Oracle Sqldeveloper,编辑 问题已解决:我在某个时候错误地删除了PL/SQL过程中的一行,启用DBMS输出,因此它无法向PHP发送任何内容。在sqldeveloper中测试它时,我必须连接到我的网络和我用来实现DBMS输出的代码,这就是为什么它在sqldeveloper中工作而不是在PHP中工作的原因 现在我觉得自己很傻,因为它错误地删除了一行代码 如果有人有类似的问题,我会在下面留下查询 把我的头撞在桌子上,想弄明白为什么这样不行 这是使用PHP连接到Oracle数据库,在SQL_Developer中创建代码 我

编辑

问题已解决:我在某个时候错误地删除了PL/SQL过程中的一行,启用DBMS输出,因此它无法向PHP发送任何内容。在sqldeveloper中测试它时,我必须连接到我的网络和我用来实现DBMS输出的代码,这就是为什么它在sqldeveloper中工作而不是在PHP中工作的原因

现在我觉得自己很傻,因为它错误地删除了一行代码

如果有人有类似的问题,我会在下面留下查询


把我的头撞在桌子上,想弄明白为什么这样不行

这是使用PHP连接到Oracle数据库,在SQL_Developer中创建代码

我创建了一个PL/SQL过程,它将两个整数作为开始和结束节点,并给出一些方向,在SQL_开发人员和PHP中运行良好。PHP中的select语句就是这样,返回了我所需要的内容

$get_instruc = "Select * FROM TABLE(Navi_Instructions.Get_Navi_Instructions(:start_node,:end_node))";
(使用oci_bind_by_name绑定整数)

我现在要求整数是字符串,因此我重新编写了PL/SQL过程以适应这一要求。我的新过程工作得非常好,当我在SQL_Developer中使用下面的select语句时,它会检索正确的数据

Select * FROM TABLE(Navi_Instructions_Final.Get_Navi_Instructions_Final('Room_101','Room_120'));
我的下一步是简单地将这个select语句放到PHP中,但PHP select语句拒绝返回任何值。我刚刚返回“已选择0行”

(字符串是使用oci_bind_by_name绑定的)

我真的不明白它是如何工作的,select语句在SQL_Developer中工作,所以它不是PL/SQL过程或语句。这些值最初有空格,我用下划线替换了空格,但这没有帮助。我在字符串周围使用了“”和“”。我尝试过删除绑定,只使用普通字符串,比如

$get_instruc = "Select * FROM TABLE(Navi_Instructions_Final.Get_Navi_Instructions_Final('Room_101','Room_120'))"

我是否缺少一些基本的东西,比如Oracle无法通过PHP接收字符串/变量字符??非常感谢您的帮助。

您是否验证了从应用程序调用函数时实际传递到函数中的内容?我将向Oracle函数添加一些日志记录,并存储传入的参数以供检查。然后在SQL Developer中测试select语句中保存的参数。我发现了问题!由于太多的深夜编码,我意外地删除了PL/SQL包中的一行(启用DMBS输出)。因此它无法将任何内容发送回PHP。啊,我现在觉得自己很傻。。
$get_instruc = "Select * FROM TABLE(Navi_Instructions_Final.Get_Navi_Instructions_Final('Room_101','Room_120'))"