[英]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.