我正在Oracle数据库中执行select操作,需要针对结果为false(不包含结果)或为true(包含一个或多个结果)采取不同的操作。
然而,以下列方式测试结果会给我一个问题。在我实际上从我的查询得到结果的情况下,if(!
自然地验证为false并转到else
语句 - 完美!
但是在进行此测试时,内部指针会在结果中移动,从而在稍后执行while
语句时会丢失第一个结果。
if (!($row = oci_fetch_array($get_doc_paths, OCI_ASSOC+OCI_RETURN_NULLS))){
do something
}
else {
while ($row = oci_fetch_array($get_doc_paths, OCI_ASSOC+OCI_RETURN_NULLS)){
do something with $row
}
}
如何在不移动内部指针的情况下测试是否有结果?
在MySQL中我会使用mysqli_num_rows或只是重置指针。我无法通过Oracle找到解决方法。
答案 0 :(得分:1)
$status = false;
while($row = oci_fetch_array(...)) {
$status = true;
// Do something with row
}
if(!$status) {
// Do something else
}