wiberg: Blöder Datenbankfehler

Hallo,

ich bin mir fast sicher, dass dieser Fehler richtig blöd ist:
Die Prozedur soll zwei Dateien includen. Über die Variable 's', die über die URI mitgegeben wird, sucht sie sich die Werte von 's1' und 's1' aus der Tabelle. Die Werte sollen nun in die include-Funktion eingesetzt werden und fertig. Leider Funktioniert das immer nur bei 's1', danach sind die Variablen 's1' und 's2' plötzlich leer. Ich nehme wohl an, dass das ich da mit den Variablen was falsch gemacht habe...
hier der Code:

if(isset($_GET['s'])) {
  $result = mysql_query("SELECT * FROM structure WHERE id = ".$_GET['s'].";");
  $q = mysql_fetch_array($result);
  include($q['s2']);
  include($q['s1']);
}

Ergebnis: s1 wird includet, s2 verursacht "Warning: main(): Failed opening '' for inclusion (include_path='.;c:\php4\pear')", offenbar, weil die Variable plötzlich leer ist. Ich peils einfach nicht.

Ferner fiel mir auf, dass offensichtliche Syntax-Fehler in manchen Include-Dateien (fehlendes ';' am Ende der Zeile...) manchmal mit einer Fehlermeldung quittiert werden, und manchmal ohne ersichtlichen Grund auch nicht (Error reporting ist auf E_ALL, keine @s usw.) Vielleicht hängt das ja zusammen, jedenfalls erschwert es die Fehlersuche doch recht eklatant. Wär schön, wenn mir jemand helfen könnte,
mfg
wiberg

  1. Hi!

    if(isset($_GET['s'])) {
      $result = mysql_query("SELECT * FROM structure WHERE id = ".$_GET['s'].";");
      $q = mysql_fetch_array($result);
      include($q['s2']);
      include($q['s1']);
    }

    Schreib das mal so um:

    if(isset($_GET['s'])) {
      $result = mysql_query("SELECT * FROM structure WHERE id = ".$_GET['s'].";");
      $q = mysql_fetch_array($result);

    echo mysql_error();
      var_dump($q);
      var_dump(file_exists($q['s2']));
      var_dump(file_exists($q['s1']));
    }

    Was kommt dabei raus?

    Prüfe Syntax-Fehler einzelnd - mit "php -l dateiname" kannst Du die Syntax einfach prüfen.

    Es kann ja sein dass einige Fehler nicht gefunden werden, wenn die Datei erst gar nicht eingebunden wird...

    Grüße
    Andreas

    --
    SELFHTML Feature Artikel: http://aktuell.de.selfhtml.org/artikel/
  2. Hi,

    lass Dir die Variablen doch einfach mit ECHO mal ausgeben ;o)
    Ich vermute fast, dass da nix in Deiner Datenbank steht. Auch egal, Du solltest bei dieser Methode vor dem includen auf alle Fälle prüfen, ob das Ergebnis da ist, sonst bekommst Du später immer wieder unerwartete Fehler auf der Seite.

    Fang alle Fehler einfach ab, zb dass eine Datei nicht da ist, usw.

    Gruss
    Stefan

  3. Hi,

    if(isset($_GET['s'])) {
      $result = mysql_query("SELECT * FROM structure WHERE id = ".$_GET['s'].";");
      $q = mysql_fetch_array($result);
      include($q['s2']);
      include($q['s1']);
    }
    Ergebnis: s1 wird includet, s2 verursacht "Warning: main(): Failed opening '' for inclusion (include_path='.;c:\php4\pear')", offenbar, weil die Variable plötzlich leer ist. Ich peils einfach nicht.

    Kann es sein, daß im ersten Include $q durch irgendwas anderes überschrieben wird?

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Kann es sein, daß im ersten Include $q durch irgendwas anderes überschrieben wird?

      cu,
      Andreas

      Jup, das war's. So naheliegend und trotzdem wäre ich wohl nie drauf gekommen :) Vielen Dank.