2013-09-23 2 views
1

У меня есть вопрос о запросе в Oracle:PHP Oracle oci_num_rows результат 0

Проблема заключается в том, результат 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, тогда как в моей таблице есть некоторые данные.

Любые советы?

+0

Любые советы ребята? –

+1

Возможный дубликат [как получить данные из базы данных oracle с помощью PHP] (http://stackoverflow.com/questions/17782007/how-to-fetch-data-from-oracle-database-using-php) –

+0

Я не используйте PDO ... –

ответ

4

Эта функция не возвращает количество выбранных строк! Для SELECT statements эта функция вернет количество строк, которые были выбраны в буфер с помощью функций .

Попытайтесь проверить, правильно ли указаны ваши данные.

<?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); 
} 
?> 
5

Используйте это:

$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"; 
+0

У меня закончилось свободное пространство на сервере с oci_fetch_all. – Michele

1

Для всех, кто попал в эту ловушку, вот простое изложение того, что метод 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 будет получать все оставшиеся строки и помещаем их в буфер $out.

Смежные вопросы