PHP - MySQL Fehlermeldung



  • hab ich gemacht wie du sagtest.

    der mysql_select_db scheint zu funzen, denn die fehlermeldung lautet nun wieder:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in

    *total ratlos* 😕



  • kannst du grad nochmal alles zusammen im kleinstmöglichen fehlschlagenden Beispiel geben bitte?



  • Hat der Provider irgend eine Beschränkung? Kannst Du es mit einer lokalen Installation nachvollziehen (XAMP)?



  • @ministry:
    aufruf einer funktion aus einer for schleife.
    Funktion an sich:

    function get_list ($param) {
      //    $param    -->    heutiges Datum deutsch
      $abfrage=mysql_query("SELECT * FROM new_calender") or die(mysql_error());
      while ($row=mysql_fetch_array($abfrage)) {
         // irgendwas machen
      }
    }
    

    Fehlermeldung, auch wenn ich den Verbindungshandler beim mysql_connect / mysql_select_db weglasse:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in

    sobald ich den verbindungshandler setze und die mysql_connect / mysql_select_db mit or die (mysql_error()) direkt in die oben genannte funktion schreibe erhalte ich folgende Fehlermeldung:
    Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in

    ABER: der fehler tritt nicht immer auf. da der aufruf der funktion aus einer for schleife kommt, wird dieses ja mehrfach "geladen" und ich sag mal bei 75% der aufrufen funktioniert auch alles bestens nur bei den anderen 25% bringt der mir solche fehler...

    @witte:
    tja das ist ein problem. denn ich habe nur die zugangsdaten für phpmyadmin und einem Webfrontend / Adminbereich bekommen aus dem ich eine neue Webanwendung generieren soll. das ist schon etwas schwierig. die inhaberin der seite kann zu einem provider oder dergleichen gar nichts sagen, da sie sich damit nichts beschäftigt hat und es komplett ausgelagert hatte und die andere firma nicht mehr existiert oder verkracht sind etc etc ich weiß es nicht.
    ansonsten werd ich wohl auf meinem pc mir die umgebung zusammenbauen und es lokal mal testen müssen....



  • Das hört sich komisch an. Am Code liegt es nicht, eventuell ist da was an der Installation im Eimer.

    Welche Version von MySQL ist da denn drauf (http://de3.php.net/manual/de/function.phpinfo.php) ?

    Lokal zu testen ist aber sowieso in jedem Fall bequemer.



  • also:
    phpmyadmin: 2.9.1.1
    mysql: 4.0.18

    kann man das irgendwie umgehen??? oder den fehler abfangen???



  • Bart Simpson schrieb:

    sobald ich den verbindungshandler setze und die mysql_connect / mysql_select_db mit or die (mysql_error()) direkt in die oben genannte funktion schreibe erhalte ich folgende Fehlermeldung:
    Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in

    In die Funktion die in der for-Schleife aufgerufen wird? Das heißt du öffnest die Verbindung bei jedem Schleifendurchlauf erneut?? Da würd ich als Server aber auch streiken 🙂

    mysql_close();
    

    Oder den Verbindungsaufbau an den Seitenanfang setzen, sodass die Verbindung nur noch einmal hergestellt wird.

    LG, Micha



  • @RadnomAccess85:

    den mysql_connect befehl hatte ich nur zu testzwecken in die funktion geschrieben, ansonsten / normal wird nicht mit jedem schleifendurchlauf die verbindung geöffnet und bekomme so auch die fehler.



  • was macht der denn wenn du ein mysql_fetch_assoc oder mysql_fetch_row machst



  • Wäre auch ganz interessant was die funktion denn genau macht oder wie das ende aussieht ...



  • so hier nochmal die function, noch ein bissel geändert.

    function get_list ($param) {
      //	$param	-->	heutiges Datum deutsch
      $splitten=explode(".", $param);
      $anfang=date("U", mktime(0,0,0,$splitten[1],$splitten[0],$splitten[2]));
      $ende=date("U", mktime(23,59,59, $splitten[1],$splitten[0],$splitten[2]));
      //echo "anfang: ".$anfang;
      //echo "<br>ende: ".$ende;
      $abfrage=mysql_query("SELECT * FROM new_calender WHERE end BETWEEN '$anfang' AND '$ende'") or die(mysql_error());
      while ($row=mysql_fetch_array($abfrage)) {
        $nummern[]=$row["id"];
      }
      return ($nummern);
    }
    

    die funktion soll aus der tabelle new_calender in der spalte end (timestamp) alle möglichen ID´s abhängig des übergebenen Datums bestimmen.
    Fehler: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in
    wie ihr seht habe ich mal ein echo eingefügt, der mit bedigungen für die where abfrage ausgeben soll.
    an den stellen wo der fehler im browser / script auftaucht, bekomme ich für $anfang den wert: 946681199 (dies gilt auch für $ende)
    bei den anderen funzt es perfekt.
    wenn ich jetzt allerdings die where bedingung in der mysql_query weglasse, bekomme ich die fehler nicht mehr.
    also muss es ja jetzt der fehler bei der übergabe des parameters liegen, oder der date funktion... seh ich das richtig?



  • gibt er dir da auch wirklich was zurück, haste das getestet oder gibt er dir null oder sogar nen sql error zurück



  • Hallo,

    welchen Datentyp hat denn das Feld in der DB? Der Timestamp wird als INT übergeben. Kann es sein dass sich die Typen nicht vertragen?

    LG, Micha



  • @priest: ich bekomme 0 zurück

    @random: datentyp in der db ist ebenfalls "int"

    weiß momentan echt nicht weiter und teste und teste.. keine ahnung woran es liegen könnte



  • while (row=mysql_fetch_array(row=mysql\_fetch\_array(abfrage)) {
    nummern[]=row["id"];

    mach mysql_fetch_assoc anstatt mysql_fetch_array

    du kannst nicht mit den spalten namen arbeiten wenn du nur ein array nimmst das mit index arbeitet. Probiers mal



  • PRIEST schrieb:

    du kannst nicht mit den spalten namen arbeiten wenn du nur ein array nimmst das mit index arbeitet. Probiers mal

    Hallo,

    mysql_fetch_array() verwendet numerische und assoziative Indizes. Es kann also je nach Zusatzparameter (MYSQL_ASSOC // MYSQL_NUM // MYSQL_BOTH) beliebig eingesetzt werden und ist damit sogar eine Erweiterung von mysql_fetch_assoc()...

    Ich denke der Fehler wird irgendwo in der Abfrage direkt sein. Vielleicht wird der Feldname "end" falsch verstanden?! Ich hab das öfter mal bei Feldnamen wie zum Beispiel "file" (mal gehts und mal nicht)!

    LG, Micha



  • @priest: werds mal probieren

    habe aber grad noch was bemerkt:
    und zwar habe ich die variable $param vor dem aufrufen der funktion geprüft und was letztenendes in der funktion an sich ankommt.

    vorm aufrufen der funktion ist $param korrekt dargestellt, also deutsches Datum und so übergeb ichs auch.
    in der Funktion selber kommt ab und an mal folgendes an: 946681199 keine ahnung wo der das her nimmt. daher wird sicherlich auch der fehler kommen.... denke ich



  • RandomAccess85 schrieb:

    PRIEST schrieb:

    du kannst nicht mit den spalten namen arbeiten wenn du nur ein array nimmst das mit index arbeitet. Probiers mal

    Hallo,

    mysql_fetch_array() verwendet numerische und assoziative Indizes. Es kann also je nach Zusatzparameter (MYSQL_ASSOC // MYSQL_NUM // MYSQL_BOTH) beliebig eingesetzt werden und ist damit sogar eine Erweiterung von mysql_fetch_assoc()...

    Ich denke der Fehler wird irgendwo in der Abfrage direkt sein. Vielleicht wird der Feldname "end" falsch verstanden?! Ich hab das öfter mal bei Feldnamen wie zum Beispiel "file" (mal gehts und mal nicht)!

    LG, Micha

    hm das stimmt natürlich aber er hat keinen zusatz parameter ^^
    Das mit dem namen kann auch gut sein mit dem "end" es gitb ja die BEGINN .. END anweißung!!!



  • so leute...

    folgendes.
    habe die spalte end in was anderes umbenannt, da es ja hätte sein können das damit die probleme auftreten. dies ist aber nicht der fall. so.

    nun habe ich alles mal auf nen anderen server überspielt (warum ich da nicht eher drafugekommen bin... 🙄 ) und siehe da es funzt alles ohne probleme... *ich könnt ko....*

    tja, die seite soll aber eigentlich auf dem anderen server(wo die fehler kommen) laufen. liegt das jetzt nun an einer kaputten installation des servers, sicherlich oder???

    auf alle fälle vielen dank für eure hilfe und mühe



  • Hallo,

    "kaputte Installation" würde ich es nicht nennen. Vielleicht sind die Zugriffe pro Minute nur etwas strenger geregelt. Man könnte es auch Performanceorientiert nennen ^^! Wobei da natürlich dagegen spricht, dass (wenn ich es richtig gelesen hab) 7 Zugriffe die nur Datensätze holen / vergleichen und anzeigen ziemlich wenig ist!

    Die Größe der Datenbank / Tabelle (die Anzahl der Datensätze) kann da auch eine wichtige Rolle spielen. Wenn du zum Beispiel auf eine Tabelle mit 500.000 Datensätzen zugreifst und eine bestimmte Auswahl filtern willst, dauert der Zugriff jenach Server ziemlich lange. Das kann dann unter Umständen einen Timeout erzeugen -> die Verbindung zum Server trennen -> dir solche suspekten Fehlermeldungen liefern.

    LG, Micha


Anmelden zum Antworten