Avatar billede lademan Novice
22. maj 2007 - 22:21 Der er 6 kommentarer og
2 løsninger

Alternativ til ODBC_NUM_ROWS()

Er dette et forsvarligt alternativ til ODBC_NUM_ROWS(), der ikke virker sammen med mssql?


$result = odbc_exec($connection,"SELECT * FROM test");     
if (odbc_fetch_row($result, 1)){ // Der findes ét eller flere resultater
    odbc_fetch_row($result, 0); // Gå tilbage til første række
    while (odbc_fetch_array($result)){
        ...
    }
} else print "";
Avatar billede 0xffff Nybegynder
22. maj 2007 - 23:19 #1
jeg er ikke sikker på at (odbc_fetch_row($result, 1)) ikke vil give en error på et resultsæt der ikke indeholder flere rækker.

Men eftersom at det er at bygge en connection der tager tid og du allerede har den, ville jeg da eventuelt anbefale at lave en select count(xxx) from test.
Evaluere på den række du ved du får tilbage, og dernæst udføre den rigtige query alt efter hvad resultatet er.
Avatar billede lademan Novice
23. maj 2007 - 07:25 #2
Mange tak! Kunne jeg lokke dig til at give et helt eksempel? Jeg er fuldstændig grøn i ODBC.
Avatar billede 0xffff Nybegynder
23. maj 2007 - 07:59 #3
$result = odbc_exec($connection,"SELECT count(*) as antal FROM test");
while (odbc_fetch_array($result))
{
  $antal =$Row['antal'];
}

if ($antal > 0)
(
$result = odbc_exec($connection,"SELECT count(*) as antal FROM test");
)
Avatar billede lademan Novice
23. maj 2007 - 08:47 #4
Det virker ikke :-(
Avatar billede 0xffff Nybegynder
23. maj 2007 - 08:54 #5
ok hvad virker ikke ved det ?

prøv at lave en SELECT count(*) as antal FROM test på din database og check resultat.

Bagefter lav en echo $antal;

Og check om de 2 er de samme.
Avatar billede lademan Novice
23. maj 2007 - 09:14 #6
Ahh ok - man skal åbenbart ud i sådan en her

    $count = odbc_exec($con, $sql);
    odbc_fetch_row($count, 1);
    $rowcount = odbc_result($count, 1);
    odbc_free_result($count);
Avatar billede lademan Novice
23. maj 2007 - 14:44 #7
Her er en optimal løsning til fri afbenyttelse for andre ODBC-brugere, der får brug for at tælle antallet af tilgængelige rows i et udtræk:

function countRows($sql, $con) {

    $var = explode("FROM", $sql);
    $str = "SELECT COUNT(*) FROM " . $var[1];

    $var = explode("GROUP", $str);
    $var = explode("ORDER", $var[0]);
    $str = $var[0];

    $count = odbc_exec($con, $str);
    odbc_fetch_row($count, 1);
    $rowcount = odbc_result($count, 1);
    odbc_free_result($count);

    return $rowcount;
    }
Avatar billede lademan Novice
25. november 2007 - 16:33 #8
Mange tak for hjælpen! Da der ikke er nogen, der har afgivet svar, lukkes tråden.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester