Как получить количество строк с расширением Advantage PHP? - PullRequest
0 голосов
/ 20 октября 2011

Как узнать количество строк в результирующем наборе оператора SELECT с помощью расширения базы данных Advantage PHP?

Ответы [ 2 ]

1 голос
/ 21 октября 2011

В итоге я написал свою собственную функцию, которая работает аналогично mysql_num_rows:

function my_num_rows($result) {
    ob_start(); // begin disable output from ads_result_all
    (int)$number = ads_result_all($result);
    ob_end_clean(); //close and clean the output buffer
    ads_fetch_row($r1, 0); // reset the result set pointer to the beginning
    if ($number >= 0){
         return $number;
    } else {
         return FALSE;
    }
}

Можно также переписать счетчик строк с помощью ads_fetch_row, но это было проще для того, что мне было нужно. При больших результирующих наборах производительность может быть ниже при использовании ads_result_all.

0 голосов
/ 21 октября 2011

Вам нужно будет считать строки по мере их извлечения. (вы можете увидеть этот элемент базы знаний 070618-1888 ) или выполнить второй запрос с помощью скаляра COUNT () (предложить исключить порядок по возможности)

Вот пример подсчета на ходу:

$rStmt = ads_do ($rConn, "select id, name from table1");
$RowCount = 0;
while (ads_fetch_row($rStmt))
{
   $id = ads_result ($rStmt, "id");
   $name = ads_result($rStmt, "name");
   echo $id . "\t" . $name . "\n";
   $RowCount++;
}
echo "RowCount:" . $RowCount . "\n";
...