2016-01-06 112 views
1

我正在Oracle數據庫中進行select操作,需要針對結果爲false(不包含結果)或爲true(包含一個或多個結果)採取不同的操作。來自Oracle查詢結果的PHP數

但以下列方式測試結果給我一個問題。在我實際上有查詢結果的情況下,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

'oci_num_rows' http://php.net/manual/en/function.oci-num-rows.php? – Rahman

+0

@Rahman頁面指出「這個函數沒有返回選中的行數!」 – ByScripts

+0

有了MySQL的使用經驗,聽起來就像是一個可以使用的工具 - 不幸的是,它聽起來不像這樣:) –

回答

1
$status = false; 

while($row = oci_fetch_array(...)) { 
    $status = true; 
    // Do something with row 
} 

if(!$status) { 
    // Do something else 
} 
+0

有趣而簡單的方法! –

+0

似乎甲骨文應該有更好的解決方案,但這個解決方案伎倆! – Chad