pcw
Lt. Commander
- Registriert
- Juli 2001
- Beiträge
- 1.676
Ich schreib grad an nem kleinen Spiel als Mod für nen Forum (SMF).
Allerdings tritt die in der Überschrift erwähnte Fehlermeldung irgendwie jedesmal wieder auf und ich versteh nicht warum. Die Funktionsfähigkeit der Seite wird dadurch übrigens in keiner Weise beeinträchtigt. Lediglich das Errorlog wird mit jedem Seitenzugriff weiter zugemüllt, was ziemlich lästig ist.
Auf meinem PC (Windows Testserver) laufen folgende Versionen:
PHP: 5.1.1
MySQL: 5.0.15
Genaue Fehlermeldung:
Beanstandeter Quelltext:
Gibt es eine praktikable Möglichkeit, diesen Fehler zu umgehen/abzuschalten oder muss ich das ganze wieder als Stored Procedure laufen lassen (wodurch der Fehler nicht mehr auftritt)?
Die Funktion db_query() führt eigentlich lediglich das SQL-Statement aus und kapselt mysql_query inklusive einiger Beschränkungen für die auszuführenden Statements. Subselects oder Unions zB werden verweigert.
Allerdings tritt die in der Überschrift erwähnte Fehlermeldung irgendwie jedesmal wieder auf und ich versteh nicht warum. Die Funktionsfähigkeit der Seite wird dadurch übrigens in keiner Weise beeinträchtigt. Lediglich das Errorlog wird mit jedem Seitenzugriff weiter zugemüllt, was ziemlich lästig ist.
Auf meinem PC (Windows Testserver) laufen folgende Versionen:
PHP: 5.1.1
MySQL: 5.0.15
Genaue Fehlermeldung:
Database Error: Lost connection to MySQL server during query
File: C:\Programme\Apache Group\apache2\htdocs\smf\Sources\RPG.php
Line: 325
Beanstandeter Quelltext:
Code:
321 function loadOrtInventar($oid)
322 {
323 global $db_prefix;
324 $inventar = array();
325 $result = db_query("SELECT {$db_prefix}rpg_gegenstand_eigenschaften.Eigenschaft as 'pname',{$db_prefix}rpg_gegenstand_eigenschaften.Wert as 'pwert',{$db_prefix}rpg_ort_inventar.ID_Gegenstand as 'gid' ,{$db_prefix}rpg_ort_inventar.Zustand as 'gzustand' ,{$db_prefix}rpg_ort_inventar.Anzahl as 'ganzahl' ,{$db_prefix}rpg_gegenstaende.Name as 'gname' ,{$db_prefix}rpg_gegenstaende.Beschreibung as 'gdesc', {$db_prefix}rpg_gegenstaende.Wert as 'gvalue' FROM {$db_prefix}rpg_ort_inventar LEFT JOIN {$db_prefix}rpg_gegenstaende ON ({$db_prefix}rpg_ort_inventar.ID_Gegenstand={$db_prefix}rpg_gegenstaende.ID_Gegenstand) LEFT JOIN {$db_prefix}rpg_gegenstand_eigenschaften ON {$db_prefix}rpg_gegenstand_eigenschaften.ID_Gegenstand={$db_prefix}rpg_gegenstaende.ID_Gegenstand WHERE {$db_prefix}rpg_ort_Inventar.ID_Ort=" . $oid , __FILE__, __LINE__);
326 if(mysql_num_rows($result)>0)
327 {
328 while($row = mysql_fetch_assoc($result))
329 {
330 $inventar[$row['gid']]['name'] = $row['gname'];
331 $inventar[$row['gid']]['desc'] = $row['gdesc'];
332 $inventar[$row['gid']]['value']= $row['gvalue'];
333 $inventar[$row['gid']]['zustand'][$row['gzustand']] = $row['ganzahl'];
334 $inventar[$row['gid']]['property'][$row['pname']] = $row['pwert'];
335 }
336 mysql_free_result($result);
337 return $inventar;
338 }
339 else
340 {
341 mysql_free_result($result);
342 return NULL;
343 }
344 }
Gibt es eine praktikable Möglichkeit, diesen Fehler zu umgehen/abzuschalten oder muss ich das ganze wieder als Stored Procedure laufen lassen (wodurch der Fehler nicht mehr auftritt)?
Die Funktion db_query() führt eigentlich lediglich das SQL-Statement aus und kapselt mysql_query inklusive einiger Beschränkungen für die auszuführenden Statements. Subselects oder Unions zB werden verweigert.