php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 4 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 19-10-2006, 16:44
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard warning abfangen

ich habe hier ein bescheuertes problem.

ich arbeite mit einer eigenen db-klasse. bislang reibungslos. fehler wurden in ein array weggeschrieben und gut ist. so nun passiert folgendes:
Zitat:
<b>Warning</b>: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in <b>/home/www/***/html/inc/***class.database.php</b> on line <b>146</b><br />
schlägt auf die seite durch.

aufgrund der komplexen struktur, ist es nicht ganz einfach, den verursacher auszumachen. vor allem, weil der fehler nicht einfach zu reproduzieren ist. wenn ich länger auf der site untätig war, knallt es, bei einem reload nach dem warning bleibt die meldung aus.

in der klasse habe ich dann die fetch-methode etwas aufgebohrt:
PHP-Code:
    function db_fetch($assoc=TRUE)
    {
        
// keine datenbankverbindung
        // $this->sql ist die letzte sql-anweisung
        
if($this->dbstatus == false)
            die(
's ::: '.$this->sql); //return false;

        // keine resource-id
        
if(!$this->queryres)
            die(
'q ::: '.$this->sql);

        
// anzahl datensätze ist NULL, FALSE, 0 oder wieder erwarten ein string
        
if(is_null($this->querynum) || !$this->querynum || !is_numeric($this->querynum))
            die(
'n ::: '.$this->sql);

        if(
$assoc)
            
$this->queryrecord mysql_fetch_array($this->queryres,MYSQL_ASSOC);
        else
            
$this->queryrecord mysql_fetch_array($this->queryres,MYSQL_NUM);

        return 
$this->queryrecord;
    } 
trotzdem selber effekt. die warning knallt auf die seite.

bevor die seite ausgegeben wird hab ich dann mal das fehler-array abgefragt, wenn was drin steht, wird es ausgegeben. nur steht nix drin. ich bin etwas ratlos.

wie finde ich jetzt möglichst elegant raus, welche query/abfrage den fehler auslöst?
__________________
Kissolino.com
Mit Zitat antworten
  #2 (permalink)  
Alt 19-10-2006, 17:05
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

if($assoc) {
echo 'DB-Abfrage';
$this->queryrecord = mysql_fetch_array($this->queryres,MYSQL_ASSOC);
}

so könntest zählen, wie oft "DB-Abfrage" erscheint. Die x. Abfrage ist dann der bösewicht.

Füg auch einfach mal ein echo mysql_error() ein. Eigentlich müsste ja an irgend einer stelle ein fehler ausgegeben werden.

HTH
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!

Geändert von TobiaZ (19-10-2006 um 17:08 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 19-10-2006, 17:10
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ne, das haut leider nicht hin, da die seite komplett ausgeliefert wird, d.h. das script stoppt ja nicht, wenn das warning kommt.

schmeisst php die eigentlich warnings sofort aus, wenn sie entstehen, so dass man mit obstart() was reissen kann?

Zitat:
Füg auch einfach mal ein echo mysql_error() ein. Eigentlich müsste ja an irgend einer stelle ein fehler ausgegeben werden.
ich haue alle errors in ein array, das am ende ausgegeben wird, wenn es nicht leer ist ... da kommt nix.
__________________
Kissolino.com
Mit Zitat antworten
  #4 (permalink)  
Alt 19-10-2006, 17:17
Shurakai
 Master
Links : Onlinestatus : Shurakai ist offline
Registriert seit: May 2004
Ort: Bergisch Gladbach
Beiträge: 3.084
Shurakai ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Schau dir mal debug_backtrace an - und per <pre> und print_r ausgeben....


P.S.: Bist du sicher dass du die Resource in der Klasse ablegen willst...? Was passiert, wenn du 2 Abfragen brauchst, die du in einer Schleife o.Ä. gemeinsam als Resource durchlaufen musst? Erzeugst du dann 2 Objekte..?

Geändert von Shurakai (19-10-2006 um 17:42 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 19-10-2006, 18:19
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Shurakai
Schau dir mal debug_backtrace an - und per <pre> und print_r ausgeben....
würd ich gerne, wenn ich den &%$§$&%$-fehler endlich wieder bekäme

Zitat:
P.S.: Bist du sicher dass du die Resource in der Klasse ablegen willst...? Was passiert, wenn du 2 Abfragen brauchst, die du in einer Schleife o.Ä. gemeinsam als Resource durchlaufen musst? Erzeugst du dann 2 Objekte..?
ich kann mir jetzt grad nicht vorstellen, wann das nötig ist. beispiel?
__________________
Kissolino.com
Mit Zitat antworten
  #6 (permalink)  
Alt 19-10-2006, 19:09
prego
 PHP Senior
Links : Onlinestatus : prego ist offline
Registriert seit: May 2005
Ort: Herborn
Beiträge: 1.609
prego ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich fang hier solche Sachen mit try() und catch() ein.

Das ist zwar nicht die Lösung deines Problems, bietet sich aber zur Protokolierung an und somit anschließenden Lösung an.
Mit Zitat antworten
  #7 (permalink)  
Alt 19-10-2006, 20:02
Shurakai
 Master
Links : Onlinestatus : Shurakai ist offline
Registriert seit: May 2004
Ort: Bergisch Gladbach
Beiträge: 3.084
Shurakai ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Wurzel
ich kann mir jetzt grad nicht vorstellen, wann das nötig ist. beispiel?
frag mich grad nich in welchem projekt das war... es war auf jedenfall so dass es zuviele daten waren und ein join nicht sinnvoll war... da hab ich 2 abfragen gemacht und gemeinsam verwendet... lief schneller
Mit Zitat antworten
  #8 (permalink)  
Alt 19-10-2006, 20:30
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
ich kann mir jetzt grad nicht vorstellen, wann das nötig ist. beispiel?
manchmal ist sowas wirklich sinnvoll ... aber nicht die regel.

Zitat:
Was passiert, wenn du 2 Abfragen brauchst,
was hindert dich daran, in der class ein queryresult array zu haben, wo du deine resourcen ablegst. anzusprechen mit einem indexname als optionaler parameter in der query(), fetch() etc methode ...

Zitat:
Ich fang hier solche Sachen mit try() und catch() ein.
und du meinst, dass wurzel auf einem produktivserver schon php5 am laufen hat?
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #9 (permalink)  
Alt 20-10-2006, 00:08
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

ich gehe davon aus, dass entweder connect, oder verbindung zum result aus irgend einem Grund unmitelbar nach mysqlquery abbricht.
was dabei komisch ist, dass die Abbrch- Bedingung
PHP-Code:
if(is_null($this->querynum) || !$this->querynum || !is_numeric($this->querynum))
            die(
'n ::: '.$this->sql);
als auch 
if(!$this->queryres)
            die(
'q ::: '.$this->sql); 
wenn die $this->querynum und $this->querynum geschafft hat sich zu initialisieren, immer noch nicht erfült wird.
beispiel
PHP-Code:
error_reporting(E_ALL);
$dbcon=mysql_connect("localhost","","") or die(mysql_error());
mysql_select_db("test2")or die(mysql_error());
$sql="select * from table2";
$hand=mysql_query($sql) or die(mysql_error());
echo 
$hand;//wird resource ausgegeben.

@mysql_free_result($hand); //jetzt simuliere ich abbruch
@mysql_close($dbcon);

if(!
$hand)echo "resource ungültig";
else echo 
$hand;//das ist immer noch die Resource? und ist nicht false
//obwohl $hand mit free_result behandelt wurde , 
//als auch connect kaput ist
@$erg=mysql_fetch_array($hand);//und hier kommt die gleiche fehlermeldung
// wie bei Wurzel wenn man @ weg nimmt.
@print_r($erg); 
Also sieht es einfach so aus, dass irgendwo nach der mysql_query ein Abbruch von verbindung kommt, und die Aussage, dass es nicht immer sondern nach und zu kommt, könnte vermutlich nicht an der code, sondern an verbindung liegen.
__________________
Slava
bituniverse.com
Mit Zitat antworten
  #10 (permalink)  
Alt 20-10-2006, 01:10
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

danke für die anteilnahme. leider kam der fehler bisher nicht wieder. entweder durch den einbau diverser debug-routinen oder weil ich das richtige "knöpfchen" nicht wieder gefunden habe. es ist zum *****.

@slava
ich denke, wenn die verbindung abreisst (hab ich auch vermutet), dann sollte das häufiger und unregelmäßiger vorkommen.

andererseits könnte das free_result ein interessanter hinweis sein. muss ich mal die scripte durchforsten, ob da irgendwas an falscher stelle abgewürgt wird.

@prego
wie haxe schon schrieb ... ich habe kein php5 auf einem livesystem.
__________________
Kissolino.com
Mit Zitat antworten
  #11 (permalink)  
Alt 20-10-2006, 01:21
prego
 PHP Senior
Links : Onlinestatus : prego ist offline
Registriert seit: May 2005
Ort: Herborn
Beiträge: 1.609
prego ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
@prego
wie haxe schon schrieb ... ich habe kein php5 auf einem livesystem. [/B]
Ouh, ok - aber hab ich irgendwas verpasst? Wir haben hier seit über nem Jahr PHP5 im Live betrieb und viele von den "netten" neuen Features möchte ich gar nicht mehr missen...
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:56 Uhr.