vi er lost Skrevet 7. april 2005 Del Skrevet 7. april 2005 Hvordan kan jeg få ut hvor mange rader det det er lagt til i en MySQL database, og lagre det i en variabel? På forhånd takk Lenke til kommentar
Gilbert Skrevet 7. april 2005 Del Skrevet 7. april 2005 (endret) 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 7. april 2005 av fjartan Lenke til kommentar
vi er lost Skrevet 7. april 2005 Forfatter Del Skrevet 7. april 2005 Selvfølgelig mente jeg i en tabell i en database men er ny med det så da går det litt i surr. Brukte forslag 3. Tusen takk. Lenke til kommentar
Gilbert Skrevet 7. april 2005 Del Skrevet 7. april 2005 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
stian123 Skrevet 15. juli 2005 Del Skrevet 15. juli 2005 Hvordan legger man en slik kode inn i et script? Lenke til kommentar
Hazno Skrevet 15. juli 2005 Del Skrevet 15. juli 2005 (endret) 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 15. juli 2005 av HaZnO Lenke til kommentar
stian123 Skrevet 15. juli 2005 Del Skrevet 15. juli 2005 Ja, men hvodan skal det scriptet vite at det er MIN database den skal lete i? Lenke til kommentar
Hazno Skrevet 15. juli 2005 Del Skrevet 15. juli 2005 (endret) 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 15. juli 2005 av HaZnO Lenke til kommentar
Hazno Skrevet 15. juli 2005 Del Skrevet 15. juli 2005 Bare hyggelig Vet selv hvor godt det var med hjelp da jeg startet med det Lenke til kommentar
ZoRaC Skrevet 18. juli 2005 Del Skrevet 18. juli 2005 require_once("db.inc.php"); er bedre, for hvis scriptet av en eller annen grunn ikke får åpnet filen så stopper scriptet. Resten av scriptet vil jo ikke virke likevel siden den er avhengig av kobling mot databasen. Lenke til kommentar
Hazno Skrevet 18. juli 2005 Del Skrevet 18. juli 2005 Så sant, så sant! require_once() funker nok best, ja Lenke til kommentar
kilogram Skrevet 8. desember 2005 Del Skrevet 8. desember 2005 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå