Gå til innhold

Hvordan telle hvor mange rader i en database?


Anbefalte innlegg

Videoannonse
Annonse

Går ut fra du mener en tabell i en mysqldatabase, ikke alle rader i databasen.

 

Forslag 1:

$antall = mysql_result(mysql_query("SELECT count(*) as count FROM tabell"),0,"count");

 

Forslag 2:

$query= mysql_query("SELECT * FROM tabell");
$antall = mysql_num_rows($query);

 

Forslag 3:

$query= mysql_query("SELECT * FROM tabell");
$row = mysql_fetch_row($query);
$antall = $row[0];

 

Edit: Kan svært lite om hastighet og sånt, men bruker du forslag 1 må du sansynligvis ha flere spørringer (dersom du ønsker å hente ut mer informasjon), og da kan det være raskere med forslag 3. Ikke nødvendigvis, men det er et tips :-)

Endret av fjartan
Lenke til kommentar

Hmz... når jeg tenker meg litt om, funker egentlig nr 3?

 

$query= mysql_query("SELECT count(*) as count FROM tabell");

$row = mysql_fetch_row($query);

$antall = $row[0];

 

Endret litt på første linje, kanskje det er mer riktig... *tankefull*

Lenke til kommentar
  • 3 måneder senere...

Jeg har personlig alltid brukt mysql_num_rows.

 

stian123:

Dette viser litt forum-statistikk (tatt ut av min egen kode):

<?php
$get_forums = mysql_query("SELECT forum_id FROM forum");
$get_threads = mysql_query("SELECT thread_id FROM threads WHERE thread_id = orig_thread_id");
$get_posts = mysql_query("SELECT thread_id FROM threads");

echo '<b>Statistikk</b><br>';
echo mysql_num_rows($get_forums).' temaer<br>';
echo mysql_num_rows($get_threads).' diskusjoner<br>';
echo mysql_num_rows($get_posts).' innlegg';
?>

Endret av HaZnO
Lenke til kommentar

Det er jo standard mysql_connect().

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); // Oppretter koblingen mot mysql-server'n.
$db_selected = mysql_select_db('forum', $link); // Velger hvilken database den skal håndtere, i mitt eksempel: forum.

// Her er et eksempel fra www.php.net:
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
  die('Not connected : ' . mysql_error());
}

// make foo the current db
$db_selected = mysql_select_db('foo', $link);
if (!$db_selected) {
  die ('Can\'t use foo : ' . mysql_error());
}
?>

URL: http://no.php.net/manual/en/function.mysql-select-db.php

 

Edit: Dette må selvfølgelig plasseres før noen som helst mysql_query() osv.

Om du vil slippe og måtte skrive samme regla hver gang, kan du lagre den i en egen fil, f.eks 'db.php', så slenger du inn

include_once('db.php');

øverst i scriptet ditt.

Endret av HaZnO
Lenke til kommentar
  • 4 måneder senere...
Går ut fra du mener en tabell i en mysqldatabase, ikke alle rader i databasen.

 

Forslag 1:

$antall = mysql_result(mysql_query("SELECT count(*) as count FROM tabell"),0,"count");

 

Denne er svært rask, siden den kan benytte seg av lagret informasjon om tabellen, slik at det bare blir ett diskoppslag for å svare på spørringen.

 

Om du velger å benytte en GROUP BY-klausul, og å kjøre COUNT(kolonne) i stedet, vil den fremdeles være svært rask, om du har en indeks på kolonnen (eller kolonnene) du kjører GROUP BY med.

 

Forslag 2:

$query= mysql_query("SELECT * FROM tabell");
$antall = mysql_num_rows($query);

 

Denne er treig. Først og fremst må databasen hente ut hele tabellen fra disk, og tenk deg en tabell på noen gigabyte (vi har en slik tabell i databasen for forumet). Denne tabellen må så overføres fra databasen til PHP-skriptet, en prosess som bruker tabellens størrelse ganger 2 i minnebruk. Så må PHP-skriptet telle over alle radene i resultatet, noe som kan ta mye tid dersom tabellen er stor.

 

Denne vil være mye treigere enn SELECT COUNT(*) uansett størrelsen på tabellen, fordi SELECT COUNT(*) kan lese resultatet direkte fra disken.

 

Forslag 3:

$query= mysql_query("SELECT COUNT(*) AS count FROM tabell");
$row = mysql_fetch_row($query);
$antall = $row[0];

3967852[/snapback]

 

Eg endra denne slik som du gjorde litt lenger nede. Denne vil være like rask som nummer 1.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...