问题
使用 PHP 的 oci 系列函数,查询 Oracle 数据库的数据,没有任何结果返回,也没有任何报错,oci_error() 也获取不到错误,打印出 SQL 后在 Navicat 中执行可以正常获取结果。
SQL 语句类似(这是精简后的,实际的更复杂):
SELECT * FROM ITEM WHERE NAME = 'TEST';
分析问题的过程
使用删减大法,将
SQL删减到上面那种,失败。再把
WHERE条件也删掉,没问题了。WHERE条件加回去,换掉NAME用其他字段做筛选条件,也没问题突然怀疑难道
NAME是关键字?加上双引号,仍旧失败!!!问题肯定出在
NAME上,既然Navicat中可以,PHP中不行,一定是与代码运行的环境有关系,更换PHP版本,失败更换
Apache驱动PHP的方式,才终于找到罪魁祸首Fastcgi,更换为LoadModule模式后一切正常。
问题点倒是找到了,根本原因却仍是不得而知,也许是 Apache PHP Oracle 等哪个软件的 bug吧,只能修改字段名喽