Autor Zpráva
Meloun
Profil *
Zdravím vás, pánové (a dámy),
už delší dobu používám v PHP protokol mysqli, který je mi docela sympatický až na jeden problém.
Neznám žádnou programátorsky košer cestu jak pomocí něj zjistit počet řádků v databázi.
U mysql se to řeší jednoduše:
<?
$promenna=mysql_result(mysql_query("SELECT COUNT(*) FROM tabulka"));
?>


Problém je, že protokol mysqli žádné mysqli_result() není, a tak se chci zeptat jestli je tento způsob zjištění dat přípustný, nebo ne, případně jaké alternativy navrhujete:
<?
$promenna=0;
$vytahnout=mysqli_query($spojovaci_promenna,"SELECT * FROM tabulka");
while($fetchnout=mysqli_fetch_array($vytahnout)){
$promenna++;
}
?>


Jako kód to vypadá heblovitě, ale na alternativu jsem nepřišel - spojování se SQL ve dvou paralelních protokolech je taky nešikovné (že bych si tam kvůli mysql_result() dával connect na mysql protokol), takže spoléhám na radu :-)
Meloun
Profil *
protokol mysqli žádné mysqli_result() není - samozřejmě to mělo být "v protokolu mysqli žádné mysqli_result() není", nebo "Protokol mysqli žádné mysqli_result() nemá", pardon :-)
Jan Tvrdík
Profil
Meloun:
MySQLi nepoužívám, ale tvou navrhované řešení je skutečné špatné, takže jsem rád, že sám cítíš potřebu hledat lepší řešení :)
Snad bude fungovat něco takového:

$res = mysqli_query($spojovaci_promenna, "SELECT COUNT(*) FROM tabulka"); 
$row = mysqli_fetch_row($res); 
$promenna = $row[0];


Alternativně si můžeš dopsat vlastní funkci:
function mysqli_getFirstResult($res) {
    $row = mysqli_fetch_row($res); 
    return $row[0];
}

A pak můžeš psát:
$promenna = mysqli_getFirstResult(mysqli_query($spojovaci_promenna,"SELECT * FROM tabulka"))


Edit: změněno mysqli_fetch_assoc na mysqli_fetch_row :)
Meloun
Profil *
Jan Tvrdík:
Chytré :-) děkuji. A špatné je fakt okatě, to je jenom neřest z nouze :)
Meloun
Profil *
Ad #4 - ten můj pokus je špatný okatě. Jádro pudla je tam, že mysqli_fetch_assoc() ještě vůbec neznám - holt mám ještě notné mezery

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0