kostenloser Webspace werbefrei: lima-city


php sql view probleme

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    lastminuteracing

    lastminuteracing hat kostenlosen Webspace.

    Hallo zusammen,

    ich weiß gerade nicht mehr genau weiter, lokal auf xampp funktioniert dieser sql aber auf lima-city gibt es keine result:

    $stmt = $this->prepare("SELECT year, `month`, `day`, `hour` ,count(`visitor`) as besucher FROM `view_besucher` GROUP BY hour,day , month order by `date` ");


    Die Tabelle view_besucher ist auf xampp und lima als view angelegt. Wenn ich den SQL auf lima in phpmyadmin ausführe bekomme ich einträge geliefert, wird er per php ausgeführt bekomme ich keine einträge geliefert.
    Hat einer von euch eine lösung ?

    Viele Grüße

  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. "year" ist ebenso wie "month", "day" und "hour" ein reservierte Begriff. Muss also in Backticks und noch besser: Vermieden werden.
    Wenn du die PDO-Fehlermeldungen anschaltest gibt es dir die Info dazu auch aus.
    Evtl. maskiert PMA da selbst.
    Dass das lokal bei XAMPP tut ist allerdings wirr. Sicher dass es da keine Unterschiede in den Queries gibt?
  4. Autor dieses Themas

    lastminuteracing

    lastminuteracing hat kostenlosen Webspace.

    Die Abfragen sind gleich und die views auch.
    Habe die Spalten jetzt umbennant, aber es geht immer noch nicht.

    SELECT `visitor_year`, `visitor_month`, `visitor_day`, `visitor_hour` ,count(`visitor_ip`) as besucher FROM `view_besucher` GROUP BY `visitor_hour`,`visitor_day` , `visitor_month` order by `visitor_date`


    in phpmyadmin bekomme ich Werte zurück und lokal bei XAMPP klappt es auch

    Beitrag zuletzt geändert: 21.4.2017 8:57:01 von lastminuteracing
  5. Dann wie oben gesagt: Fehlermeldungen anschalten. ;)
  6. Autor dieses Themas

    lastminuteracing

    lastminuteracing hat kostenlosen Webspace.

    Die sind angeschaltet und es kommen keine Fehler. Funktioniert ja auch genauso wie es ist lokal
  7. Sowohl in der Verwaltung als auch in deinem Code selbst?
  8. Autor dieses Themas

    lastminuteracing

    lastminuteracing hat kostenlosen Webspace.

    Ja alles eingeschaltet. Kann mir das Problem nicht erklären
  9. Irgendwo muss die Ursache ja liegen.

    Kannst du vielleicht etwas mehr Code posten? (Wo man auch die Fehlerbehandlung sieht)

    Was genau bekommst du auf Lima-City als Ergebnis? Bedeutet "kein Result", dass du nachweislich ein leeres Ergebnis bekommst oder schlug die Abfrage fehl?

    Kannst du vielleicht noch einmal sicherstellen, dass die Daten in der DB von Lima-City vorhanden sind. (Auch wenn du schon sagtest, dass PhpMyAdmin Ergebnisse liefert.)
  10. Autor dieses Themas

    lastminuteracing

    lastminuteracing hat kostenlosen Webspace.

    Hier ist der code der Abfrage:

    public function getBesucher(){
    		
    		$json = array();
    		
    		$stmt = $this->prepare("SELECT `visitor_year`, `visitor_month`, `visitor_day`, `visitor_hour` ,count(`visitor_ip`) as besucher FROM `view_besucher` GROUP BY `visitor_hour`,`visitor_day` , `visitor_month` order by `visitor_date` ");
    		
    		$stmt->execute(); 
    		$stmt->store_result();
    		$stmt->bind_result($year,$month,$day,$hour,$besucher);
    		$counter =0;
    		while ($stmt->fetch()) {
    			$json[] = '[Date.UTC('.$year.','.$month.','.$day.','.$hour.'),'.$besucher.']';
    		}
    		return $json;
    	}


    Ich bekomme nachweislich ein leeres ergebniss obwohl daten in der View vorhanden sind wie man hier im link Sieht:
    lastminuteracing.lima-city.de/view_inhalt.png
  11. muellerlukas hat gleich zu Beginn von PDO gesprochen, obwohl du das nicht explizit erwähnt hattest. Ist das überhaupt richtig, dass du PDO einsetzt oder nutzt du Mysqli?

    Bei Mysqli musst du prinzipiell jeden Schritt überprüfen, also die Rückgabewerte von prepare, execute, store_result und bind_result auswerten. Ansonsten entgehen dir womöglich Fehler.
  12. Autor dieses Themas

    lastminuteracing

    lastminuteracing hat kostenlosen Webspace.

    Ich nutze Mysqli. habe folgende meldungen eingebaut:
    echo "FEHLER0".mysqli_error();
    echo "FEHLER1".mysqli_error($stmt);
    echo "FEHLER2".mysqli_error($this->prepare);
    echo "FEHLER3".mysqli_error($stmt->execute());
    echo "FEHLER4".mysqli_error($stmt->store_result());
    echo "FEHLER5".mysqli_error($stmt->bind_result());


    aber es wird bei keinem der 6 meldung ein Fehler erzeugt.
  13. Die Funktion mysqli_error() gibt dir eine Fehlerbeschreibung, direkt nachdem ein Fehler auftrat. Außerdem musst du das betreffende Mysqli-Objekt übergeben, das wäre in deinem Fall $this.

    Ich versuche es einmal anders, lass mich die Methode getBesucher() um ein paar Debuggingausgaben ergänzen:
    public function getBesucher(){
    		
    		$json = array();
    		
    		$stmt = $this->prepare("SELECT `visitor_year`, `visitor_month`, `visitor_day`, `visitor_hour` ,count(`visitor_ip`) as besucher FROM `view_besucher` GROUP BY `visitor_hour`,`visitor_day` , `visitor_month` order by `visitor_date` ");
    		var_dump($stmt === false);
    		
    		var_dump($stmt->execute()); 
    		var_dump($stmt->store_result());
    		var_dump($stmt->bind_result($year,$month,$day,$hour,$besucher));
    		$counter =0;
    		while ($fetch_return = $stmt->fetch()) {
    			$json[] = '[Date.UTC('.$year.','.$month.','.$day.','.$hour.'),'.$besucher.']';
    		}
    		var_dump($fetch_return);
    		var_dump($json);
    		return $json;
    	}
    Wenn du das ausführst, was wird dir dann ausgegeben?
  14. Autor dieses Themas

    lastminuteracing

    lastminuteracing hat kostenlosen Webspace.

    Folgendes wird ausgegeben:
    bool(false)
    bool(false)
    bool(false)
    bool(true)
    bool(false)
    array(0) {
    }
  15. Demnach schlug der Aufruf von execute() fehl. Ich füge direkt danach noch eine Zeile ein, um die Fehlerursache auszugeben:
    public function getBesucher(){
             
            $json = array();
             
            $stmt = $this->prepare("SELECT `visitor_year`, `visitor_month`, `visitor_day`, `visitor_hour` ,count(`visitor_ip`) as besucher FROM `view_besucher` GROUP BY `visitor_hour`,`visitor_day` , `visitor_month` order by `visitor_date` ");
            var_dump($stmt === false);
             
            var_dump($stmt->execute());
            echo $this->error; 
            var_dump($stmt->store_result());
            var_dump($stmt->bind_result($year,$month,$day,$hour,$besucher));
            $counter =0;
            while ($fetch_return = $stmt->fetch()) {
                $json[] = '[Date.UTC('.$year.','.$month.','.$day.','.$hour.'),'.$besucher.']';
            }
            var_dump($fetch_return);
            var_dump($json);
            return $json;
        }
    Was bekommst du dann als Ausgabe?
  16. Autor dieses Themas

    lastminuteracing

    lastminuteracing hat kostenlosen Webspace.

    Lösung beim fehler:
    Prepared statement needs to be re-preparedbool

    Link zum Mysql forum:
    https://forums.mysql.com/read.php?98,643054,643287


    Lokal kann man den table_definition_cache selber erhöhen. Hier bei Lima City ein Support Ticket öffnen und mitteilen das Sie den table_definition_cache erhöhen sollen.

    Viele dank für eure hilfe :))

    Beitrag zuletzt geändert: 25.4.2017 17:51:54 von lastminuteracing
  17. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!