簡體   English   中英

PHP Oracle oci_num_rows結果0

[英]PHP Oracle oci_num_rows result 0

我對Oracle中的查詢有疑問:

問題是, oci_num_rows的結果始終為0。

到目前為止,這是我的代碼:

  $query = "SELECT IP_ADDRESS, STATUS FROM SEIAPPS_IP_ADDRESS WHERE IP_ADDRESS='$ip'";
  $result = oci_parse($c1, $query);
  oci_execute($result);
  echo $found = oci_num_rows($result);

為確保確定,我嘗試清除條件"WHERE IP_ADDRESS='$ip'" 結果仍然是0,而我的表中有一些數據。

有什么建議嗎?

用這個:

$query = "SELECT IP_ADDRESS, STATUS FROM SEIAPPS_IP_ADDRESS WHERE IP_ADDRESS='$ip'";
$result = oci_parse($c1, $query);
oci_execute($result);
$numrows = oci_fetch_all($result, $res);
echo $numrows." Rows";

此函數不返回選擇的行數! 對於SELECT statements此函數將返回通過oci_fetch*()函數提取到緩沖區的行數。

嘗試執行此操作以檢查您的連接憑據是否正確。

<?php
$conn = oci_connect("hr", "welcome", "localhost/XE");
if (!$conn) {
    $e = oci_error();   // For oci_connect errors do not pass a handle
    trigger_error(htmlentities($e['message']), E_USER_ERROR);
}
?>

對於陷入此陷阱的其他人,這是oci_fetch_all方法將返回的內容的簡單摘要。

$s = oci_parse($conn, "
          SELECT 1 AS A FROM DUAL 
    UNION SELECT 2 AS A FROM DUAL 
    UNION SELECT 3 AS A FROM DUAL 
    UNION SELECT 4 AS A FROM DUAL
");
oci_execute($s);
echo "records fetched: ". oci_num_rows($s)."\n";

oci_fetch($s);
echo "records fetched: ". oci_num_rows($s)."\n";

oci_fetch($s);
echo "records fetched: ". oci_num_rows($s)."\n";

oci_fetch_all($s, $out);
echo "records fetched: ". oci_num_rows($s)." out count: ". count($out['A']) . "\n";

將輸出:

records fetched: 0
records fetched: 1
records fetched: 2
records fetched: 4 out count: 2

因此oci_num_rows是增量的,每次對oci_fetch調用都會使計數器增加一(假設至少oci_fetch_all獲取一條記錄),而oci_fetch_all將獲取所有剩余的行並將其放入$out緩沖區。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM