ociexecute没有结果。没有提示错误消息

时间:2016-07-25 08:57:06

标签: php sql oracle oci

我遇到了问题,我的查询不会返回任何结果。虽然没有提示错误或警告。虽然查询本身将返回结果,但如果我直接在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,然后会弹出一个警告。

3 个答案:

答案 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使用大写字母^^。