mysql_free_result

  • Themenstarter Themenstarter joky_joky
  • Beginndatum Beginndatum
J

joky_joky

Hallo zusammen ich habe ein Problem bei der Umstellung einiger Scripte von einem Alten Server auf einen neuen.

Und zwar bekomme ich auf dem neuen Server immerwieder die Fehlermeldung

Warning: (null)() [function.mysql-free-result]: 1 result set(s) not freed. Use mysql_free_result to free result sets which were requested using mysql_query() in Unknown on line 0

Hat jemand eine Idee warum das so ist also warum die Sripte auf dem alten system laufen und auf dem neuen nicht bzw. wie kann ich diese Fehlermeldung beheben (php.ini)
ect.

Ach ja ich weis das ich mit mysql_free_result den Speicher wieder freigeben kann.

Bin für jede anregung dankbar.

MfG
Joky
 
Zeig uns doch mal bitte den betreffenden Code, so koennen wir ja im Grunde raten bis wir blau anlaufen und uns die Augen aus den Hoehlen treten.
 
Das ist eine Warnung, weil Du den Server unnötig belastest und MySQL ein Ergebnis halten lässt, was nicht mehr gebraucht wird.

Diese Warnung tritt auf, wenn Du ein Ergebnis nicht vollständig abrufst, z.B. willst Du nur 10 Datensätze haben und arbeitest nicht mit LIMIT sondern brichst das Auslesen der Datensätze beim 10. im Skript ab oder Du machst eine Abfrage nur um mit [phpf]mysql_num_rows[/phpf] die Anzahl zu ermitteln.

Du umgehst die Fehlermeldung, indem Du entweder Deine Queries umschreibst oder Dein Result-Set explizit freigibst. Du musst Dein Ergebnis entweder mit [phpf]mysql_free_result[/phpf] freigeben oder mit mysql_fetch_* auslesen bis false zurückgegeben wird.

Beispiele:
PHP:
$res=mysql_query("select * from tabelle");
$i=0;
while (($row=mysql_fetch_assoc($res)) && $i<10) {
    //...
    $i++;
}

//besser:
$res=mysql_query("select * from tabelle limit 10");
while ($row=mysql_fetch_assoc($res)) {
    //...
}
PHP:
$res=mysql_query("select * from tabelle");
$count=mysql_num_rows($res);

//besser:
$res=mysql_query("select count(*) as c from tabelle");
$count=null;
while ($row=mysql_fetch_assoc($res)) {
    $count=$row['c'];
}
//oder:
$res=mysql_query("select count(*) as c from tabelle");
$row=mysql_fetch_assoc($res));
$count=$row['c'];
mysql_free_result($res);
Gruß hpvw
 
Aha ok Danke für die Antwort dann werde ich wohl alle Scripte nochmals überarbeiten müssen.

MfG
Joky
 
Zurück