Autor | Zpráva | ||
---|---|---|---|
T-ony Profil |
#1 · Zasláno: 5. 10. 2013, 02:43:58
Dobrý den, chtěl bych se optat ohledně uvolnění paměti.
Mám stránku, která je rozdělená na header - obsah stránky - footer v headeru mám připojení do databáze, obsah výtah, a ve footru mám mysqli_free_result($vysledek); mysqli_close($spojeni_db); píše mi to tuto chybu: Warning: mysqli_free_result() expects parameter 1 to be mysqli_result, boolean give sem začátečník a tak mi pomůže cokoliv - děkuji |
||
Tori Profil |
Hláška je jasná, v proměnné $vysledek je logická hodnota, ale měla by tam být instance třídy mysqli_result. Může to znamenat, že poslední SQL dotaz selhal, ale i že si tu proměnnou někde přepisujete jinou hodnotou - projděte si celý skript od konce, ať zjistíte, kde se do té proměnné co ukládá.
Jestli ale voláte mysql_free_result až na konci skriptu, tak to můžete klidně vynechat - paměť se uvolní automaticky při ukončení skriptu. Tohle se spíš používá v případech, kdy čtete z DB velký objem dat (třeba i několika dotazy paralelně) a potřebujete průběžně uvolňovat paměť.
|
||
Rfilip Profil |
#3 · Zasláno: 5. 10. 2013, 07:53:24
V $vysedek je promena typu bool coz znanena ze Mysql dotaz selhal kvuli syntakticke chybe v nem, ale je divne ze toto uz nehlasi pri vypisu zadna z funkci mysql_fetch_*, takze to pri vypisu mate pravdebne podminkou osetrene., tak to musite v footeru taky osetrit.
Chtelo by to cely kod pro dalsi rady Jinak volat tyto dve funkce na konci scriptu je celkem zbytecne, stejne se o to postrara php engine po ukonceni behu sriptu. |
||
T-ony Profil |
#4 · Zasláno: 6. 10. 2013, 18:42:38
Tori:
Rfilip: No vypisuji ho až na konci, takže to zrušim, ale stejně chci přijít na to kde je chyba. Jinak taky nevím jestli je dobře, že pokaždé když vypisuji data z databáze, vždy to ukládám to jedné proměnné $vysledek = mysqli_query($spojeni_db,$sql) |
||
T-ony Profil |
Rfilip, Tori:
V kodu vyše se minimálně posílá jeden příkaz a to set names utf8 if(isset($_SESSION['a']) and $_SESSION['a']==="neco_a"){ echo "<p><a href='pr.php'>Úvod</a></p>"; echo "<p><a href='za.php'>Zákazníci</a></p>"; echo "<p><a href='obj.php'>Objednávky</a></p>"; echo "<p><a href='zm.php'>Změnit heslo</a></p>"; echo "<p><a href='od.php'>Odhlásit se</a></p>"; if(isset($vysledek) and (!isset($_GET['objed']) and !isset($_GET['cen']))){ mysqli_free_result($vysledek);} if(isset($spojeni) and (!isset($_GET['objed']) and !isset($_GET['cen']))){ mysqli_close($spojeni);} } echo "</div>"; echo "</div>"; echo "<div class='sloupec'>"; if(isset($_GET['objed']) or isset($_GET['cen'])){ $footer_u = ""; foreach($_GET as $footer_h){ $footer_u[] .= $footer_h; } $sql = "SELECT jmeno, prijmeni FROM login WHERE id =".$footer_u[0]; $vysledek = mysqli_query($spojeni,$sql) or die("Chyba: " . mysqli_error($spojeni)); while ($radek = mysqli_fetch_assoc($vysledek)){ $footer_j = $radek['jmeno']; $footer_p = $radek['prijmeni']; } echo "<h3>Uživatel:</h3>"; echo "<p class='nazev_f'>Jméno</p>"; echo "<p>$footer_j</p>"; echo "<p class='nazev_f'>Přijmení</p>"; echo "<p>$footer_p</p>"; if(isset($vysledek)){ mysqli_free_result($vysledek);} if(isset($spojeni)){ mysqli_close($spojeni);} } ?> </div> </div> </div> </body> </html> |
||
T-ony Profil |
#6 · Zasláno: 8. 10. 2013, 23:09:24
Jenom dodávám, že v tomto případě bylo posláno jenom nastavení na utf 8, ale když jsem vypsal nějaká data, tak chybová hláška zmizela. takže dík
|
||
Tori Profil |
#7 · Zasláno: 9. 10. 2013, 07:44:40
Tohle je zrovna případ, kde mi mysqli_close i mysqli_free_result připadá zbytečné.
|
||
Časová prodleva: 11 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0