start en tråd Pil

Tæl rækker i databasen vha. mysqli

forum » php, asp, perl
skrevet 19/6 2009

Hvordan tæller man hvor mange rækker der er i databasen med mysqli?
btw. jeg ved godt hvordan man gør med mysql: mysql_num_rows();

flytteklar
7 indlæg
offline

Svar
#1


<?php

$str = "Her er en tilfældig sætning"; //definer i en tilfældig variabel

$antal_tegn = strlen($str); //Hvor mange tegn er der i den

echo "Variablen har: ".$antal_tegn." tegn"; //Skriv resultat ud på skærmen

?>



hvis jeg forstår dig ret

skrevet 19/6 2009
teodor
210 indlæg
offline
#2
Du er helt galt på den.

mysqli er ligesom mysql, bare mere sikret imod mysql injection

skrevet 19/6 2009
flytteklar
7 indlæg
offline
#3
mysqli_num_rows();


He he!

skrevet 19/6 2009
udviklingschef
144 indlæg
offline
#4
men findes der ikke kun mysql_num_rows(); ?

#3 god humor :D

skrevet 19/6 2009
teodor
210 indlæg
offline
#5
#3

Dårlig humor - Hvis du ikke har et kvalificeret bud, så lad venligst være med at svare!

skrevet 19/6 2009
flytteklar
7 indlæg
offline
#6
Slap du bare helt af Sennected. Det var skam kvalificeret:

$cnt = mysqli_num_rows($result);


skrevet 19/6 2009
udviklingschef
144 indlæg
offline
#7
#5 der er altså noget der hedder mysqli_num_rows();

tjek evt http://dk.php.net/mysqli_num_rows

Måske heller ikke det smarteste at sige til ejeren af siden han skal lade vær med at svare hvis han ikke har et ordentlig svar, når det er dig der er helt forkert på den?

Andre end mig der kan se ironien i det? xD

skrevet 20/6 2009
wannabe
25 indlæg
offline
#8
#7 det vidste jeg sku ikke :P, troede det var en taste fejl

skrevet 20/6 2009
teodor
210 indlæg
offline
#9
haha :D

skrevet 20/6 2009
wannabe
25 indlæg
offline
#10
#6

Hmm, det virker ikke. btw. den måde du skrev det på, var meget ironisk!

skrevet 20/6 2009
flytteklar
7 indlæg
offline
#11
Så vil jeg foreslå du prøver dette eksempel, som jeg har stjålet direkte fra php.net:

<?php

$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */

if (mysqli_connect_errno()) {

printf("Connect failed: %sn", mysqli_connect_error());

exit();

}

if ($result = $mysqli->query("SELECT Code, Name FROM Country ORDER BY Name")) {

/* determine number of rows result set */

$row_cnt = $result->num_rows;

printf("Result set has %d rows.n", $row_cnt);

/* close result set */

$result->close();

}

/* close connection */

$mysqli->close();

?>


skrevet 20/6 2009
udviklingschef
144 indlæg
offline
#12
#11 Så får man jo en hel masse data smidt i hovedet. Nej, det kan gøres mere effektivt.

Jeg har ikke forstand på php, men jeg har lidt forstand på MySQL (selvom jeg må spørge rundt omkring engang imellem).

Lav en query, der ser sådan ud i MySQL på hvordan-en-måde-man-nu-gør-det-på-i-php:

SELECT COUNT(*) FROM tabel_navn;


Og så spytter MySQL-serveren et enkelt felt med antallet af rækker i tabellen ud til dig. = Minimal traffik mellem webserver og mysql server og minimal cpu-forbrug hos begge.

skrevet 20/6 2009
spirende vip
112 indlæg
offline
#13
SELECT COUNT(*) FROM tabel_navn;

skal være

select count(*) as numrows from tabel_name


Dvs. koden bliver:

$query = "select count(*) as numrows from tabel_name";
$result = mysqli_query($query);
$row = mysqli_fetch_array($result);
$numrows = $row['numrows'];
mysqli_free_result($result);


Dit sprøgsmål er dog hvordan du tæller rækker i din database og ikke en tabel, så brug:

$query = "show table status from `din_db`";
$result = mysqli_query($query);
while($row = mysqli_fetch_array($result)) {
$numrows = $numrows + $row['Rows'];
}
mysqli_free_result($result);


#6 og #11 er nu også udemærkede eksempler du kan følge, men jeg fik da lige lov at rette på #12´s kode ;-)

skrevet 26/6 2009
spirende vip
40 indlæg
offline
#14
SELECT COUNT(*) FROM tabel_navn;


Virker skam helt fint på min database du. ;)

Kan selvfølgelig være, at nogen databaser er list hys med aliastildeling, men så længe du ikke grupperer COUNT(*) eller gør andre indviklede operationer med den, så tror jeg da, at min kode er helt fin på de fleste databaser.

Hvis det er php, der kræver, at resultatet hedder numrows, så kan jeg kun sige I pwn nubs, (for jeg bruger nemlig et mere awsum codyng langwich.)

Men mit svar var selfølgelig ikke det rigtige, så thumbs up for dem, der ikke misforstår alt, folk spørger om, fordi de ikke kan finde ud af at kode i det sprog, folk nu snakker om. xD

skrevet 26/6 2009
spirende vip
112 indlæg
offline


Besvar

For at kunne besvare tråde og andet godt, skal du
have en bruger. En sådan kan oprettes på vores forside.