getRowCount() vrací hodnotu –1

fikusir
Člen | 27
+
0
-

Ahoj, prosím o radu.

<?php
$test=$this->database->query('Select * FROM [KontrolaVyrobku].[dbo].[Records]');
echo $test->getRowCount();
?>

Query jsem zjednodušil a funguje jak má, předává mi do template řádky z query. Nicméně, pokud se snažím zjistit počet řádků, tak mi to pokaždý vrátí hodnotu –1.

Mohl bych dát count() do dotazu a pak jen vypsat onu hodnotu, ale dotaz měním dle určitých vstupních parametrů a v tom případě bych tam měl spoustu duplicit.

Používám PHP + MSSQL – vím, divná kombinace :)

Moc díky, Michal

CZechBoY
Člen | 3608
+
0
-

Asi by šlo udělat něco jako

$countQuery = 'SELECT COUNT(*) FROM (' . $dataQuery . ') x';

ale nevim s jak velkou databází pracuješ, jestli by to nebyl výkonostní problém a tak.

fikusir
Člen | 27
+
0
-

Bohužel, tohle prave pouzit nemuzu, nebo mozna nechci :) Dotaz je realne slozitejsi a pouziva parametry a joiny. getRowCount() mi prijde elegantni, ze se nepta znovu, jen cihne kolik ma vysledek radku. Ale diky za snahu

F.Vesely
Člen | 369
+
+1
-

Ta metoda getRowCount() pouze volá metodu rowCount() nad PDOStatement, takže je potřeba hledat tam https://www.php.net/…rowcount.php

PDOStatement::rowCount() returns the number of rows affected by the last DELETE, INSERT, or UPDATE statement executed by the corresponding PDOStatement object.

If the last SQL statement executed by the associated PDOStatement was a SELECT statement, some databases may return the number of rows returned by that statement. However, this behaviour is not guaranteed for all databases and should not be relied on for portable applications.

fikusir
Člen | 27
+
0
-

Perfektni odpoved. Menim svuj pohled na vec. Priste na to pujdu stejne jako ty, tzn. kouknu do metody a podivam, co dela. Moc diky a poohlidnu se elegantnejsim reseni.

CZechBoY
Člen | 3608
+
0
-

Kdyztak muzes jeste zkusit ten ->count (nebo count(…)), ale pocitej s tim ze ti to muze vyzrat dost pameti na vetsich blocich dat.
Nebo jeste muzes vyzkouset co radi Microsoft https://docs.microsoft.com/…ent-rowcount?…

Michal Hlávka
Člen | 190
+
0
-

CZechBoY napsal(a):

Kdyztak muzes jeste zkusit ten ->count (nebo count(…)), ale pocitej s tim ze ti to muze vyzrat dost pameti na vetsich blocich dat.
Nebo jeste muzes vyzkouset co radi Microsoft https://docs.microsoft.com/…ent-rowcount?…

U countu si ale muzes zvolit jestli to chces pocitat v pameti nebo aby to pocitala databaze ne? :)

Kcko
Člen | 470
+
0
-

Podívej se na SQL CALC FOUND ROWS