修改 的
解决了问题:我在某些时候错误地删除了PL / SQL过程中的一行,启用了DBMS输出,因此它无法发送任何PHP。在SQL开发人员中进行测试时,我必须连接到我的网络,而我用来执行DBMS输出的代码,这就是为什么它在SQL_Developer中工作而不在PHP中工作。
我觉得非常愚蠢现在已经归结为错误的代码行。
如果有人有类似的话,我会在下面留下查询
将我的头撞在一张桌子上试图弄清楚为什么这不起作用。
这是使用PHP连接到Oracle数据库,在SQL_Developer中创建代码。
我创建了一个PL / SQL过程,它将两个整数作为起始和结束节点并吐出一些方向,这在SQL_Developer和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行”。
$get_instruc = "Select * FROM TABLE(Navi_Instructions_Final.Get_Navi_Instructions_Final(:start_node_final,:end_node_final))";
(使用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接收字符串/ varchars?任何帮助将不胜感激。