我遇到了问题,我的查询不会返回任何结果。虽然没有提示错误或警告。虽然查询本身将返回结果,但如果我直接在db:
上执行它//Set up Connection
$cnda = ocilogon($cnxnDabs["dbuser"],$cnxnDabs["dbpwd"],$cnxnDabs["dbname"]);
if (!$cnda) {
$e = ocierror();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
//Get query and the result
$query="select doc_id from k.doc_mmkt where doc_id = 19068694";
$stid = ociparse($cnda,$query);
ocidefinebyname($stid,"doc_id",&$DOCID);
ociexecute($stid);
ocifetch($stid);
以下是db:
的结果select doc_id from k.doc_mmkt
where doc_id = 19068694
DOC_ID
19068694
通过php没有结果: - (
有什么建议吗? 连接似乎有效,因为如果我操纵例如dbuser,然后会弹出一个警告。
答案 0 :(得分:0)
不会提示错误或警告。
您的Oracle相关代码甚至不会尝试获取超出连接错误的错误消息:
$stid = ociparse($cnda,$query);
ocidefinebyname($stid,"doc_id",&$DOCID);
ociexecute($stid);
ocifetch($stid);
...因此,如果您的PHP环境未配置为显示错误消息,我也不会感到惊讶。最简单的方法是将其添加到源代码中:
error_reporting(-1);
ini_set('display_errors', true);
您可以在相应的手册页中找到有关如何测试错误的使用示例。
注意:ocilogon
和其他别名已被弃用了一段时间,它是关于您更新为oci_connect()
的时间。
答案 1 :(得分:-1)
添加两行而不是 string result = propertyValue.Split(' ')
.Where(s => !stopWordsList.Contains(s))
.Aggregate((current, next) => current + " " + next);
Console.WriteLine(result);
$ DOC_ID = 19068694; $ query ="从k.doc_mmkt中选择doc_id WHERE doc_id ='" 。 $ doc_id。 "'&#34 ;;
答案 2 :(得分:-1)
感谢您的回复。我发现解决方案是使用大写字母作为标题的名称:
//Set up Connection
$cnda = ocilogon($cnxnDabs["dbuser"],$cnxnDabs["dbpwd"],$cnxnDabs["dbname"]);
if (!$cnda) {
$e = ocierror();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
//Get query and the result
$query="select doc_id from k.doc_mmkt where doc_id = 19068694";
$stid = ociparse($cnda,$query);
ocidefinebyname($stid,"DOC_ID",&$DOCID);
ociexecute($stid);
ocifetch($stid);
现在一切顺利。显然,Oracle使用大写字母^^。