Autor Zpráva
Evžen
Profil *
Dobrý den, upravuji v aplikaci přístup k databázi z klasického mysql na mysqli.
Mám soubor index.php, do kterého poté includuji různé třídy, vytvářím jejich instance a includuji soubory s HTML šablonami.
V souboru index.php tedy vytvořím objekt: $mysqli = new mysqli("example.com", "user", "password", "database");
Ve třídách, které později načítám, samozřejmě potřebuji přistupovat k databázi také, takže proměnnou $mysqli přidávám do konstruktoru každé třídy.
Např. vstoupím na stránku s galerií, vytvořím tedy objekt $galerie = new Galerie($mysqli);
Index.php poté končí skriptem $mysqli->close();
Otázka zní, jestli je to takto správně, nebo je lepší se připojit po ukončení práce s DB odpojit všude tam, kde potřebuji pracovat s databází.
Byl by nějaký rozdíl z hlediska výkonu? Předpokládám že ano...
Děkuji!
Alphard
Profil
close() nemusíte použivat vůbec, odpojí se to automaticky.
Evžen
Profil *
Jasně, odpojí se to automaticky po celkovém dokončení hlavního skriptu.
Ale není lepší se připojovat k DB jen jednou než víckrát?
A má nějaký vliv provádět free_result() po každém vytažení dat z DB?
Alphard
Profil
Je lepší se připojovat jen jednou, ale to děláte v index.php, ne? Jestli ne, tak vám nerozumím.
Free result běžně nepoužívám, nenechám si z db vracet tak velké sady dat, abych v tom viděl nějaký smysl. Ručně to nepíši, jestli se používá nějaký db layer, který pameť uvolní automaticky, tak možná.
Evžen
Profil *
Ano přesně tak to dělám ;-)
Ještě by mě zajímalo, zda je možné si v PHP v podmínce ověřit např. existinci záznamu v DB (přes query a numrows) a pokud tam ten záznam je, tak pak dále v "obsahu" podmínky s těmito daty pracovat?
Alphard
Profil
Ano, metoda numrows() přece původní objekt nezničí. Kdyžtak ukažte, jak vám to nefunguje.
Evžen
Profil *
To ano, ale v případě, že objekt ještě nebyl definován, lze ho nadefinovat a rovnou použít v podmínce? To je asi blbost že...

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