Jakob Schneider: MYSQL: LIMIT funktioniert nicht (jedoch keine Fehlermeldung)

Hallo Leute,

ich programmiere gerade ein bisschen an meinen Board herum und stehe vor einem Problem:

Bei diesem Query-String SELECT * FROM board_threads LIMIT 0,15 tritt (nach PHPMyAdmin) ein Fehler auf, jedoch gibt MYSQL keine Fehlermeldung aus.
Lasse ich "LIMIT 0,15" weg, funktioniert die Anweisung.
Sollte ich vielleicht doch meine DB neu installieren, sie hat ja auch schon Einträge "vergessen" (auf meinem Tripodaccount wurde übrigens nichts "vergessen")
Der Query-String selber ist doch fehlerfrei, deswegen verstehe ich die Probleme nicht, die dabei auftreten...

LG Jakob

--
Wer andern eine Bratwurst brät, hat meist ein Bratwurstbratgerät!
  1. Hallo,

    -->SELECT * FROM board_threads LIMIT 0,15 tritt

    fehlen da nicht die WHERE 'rgendwas' Angaben. Soviel ich weiss, glaub ich jedenfalls, geht LIMIT nur in Verbindung mit WHERE

    Gruß Rainer

    1. Hallo Rainer,

      Soviel ich weiss, glaub ich jedenfalls, geht LIMIT nur in Verbindung mit WHERE

      Also mein MySQL machts:

      christian@midnight:~$ mysql --version
      mysql  Ver 11.18 Distrib 3.23.52, for pc-linux-gnu (i686)

      mysql> select username from y limit 0,1 ;
      +-----------+
      | username  |
      +-----------+
      | xxxxxxxxx |
      +-----------+
      1 row in set (0.01 sec)

      Viele Grüße,
      Chistian

      --
      Ich bin ein Bandbreitenverschwender. Meine Signatur tut mir leid. Ehrlich!
  2. Halihallo Jakob

    Bei diesem Query-String SELECT * FROM board_threads LIMIT 0,15 tritt (nach PHPMyAdmin) ein Fehler auf, jedoch gibt MYSQL keine Fehlermeldung aus.

    Welche phpMyAdmin Version? - Bei 2.3.0 konnte ich das nicht feststellen. Ich würde
    zumindest bei der Datenbank den Fehler nicht suchen, denn der Query ist OK.

    Sollte ich vielleicht doch meine DB neu installieren,

    Nein, lass die DB in Ruhe, die hat damit nix zu tun, die arme. Immer alles auf die DB
    schieben... ;)

    sie hat ja auch schon Einträge "vergessen" (auf meinem Tripodaccount wurde übrigens nichts "vergessen")

    Datenbanken vergessen nicht.

    Der Query-String selber ist doch fehlerfrei, deswegen verstehe ich die Probleme nicht, die dabei auftreten...

    Ich auch nicht. Was bringt ein Update von phpMyAdmin?

    Viele Grüsse

    Philipp

    1. Hallo Philipp,

      Datenbanken vergessen nicht.

      Bist Du Dir da ganz sicher?

      http://www.heise.de/newsticker/data/lab-16.07.01-002/

      Viele Grüße,
      Christian

      --
      Ich bin ein Bandbreitenverschwender. Meine Signatur tut mir leid. Ehrlich!
  3. Hi,

    Also: Lasse ich den Querystring aus PHP laufen, gibt es auch keine Ausgabe bzw. Fehlermeldung.

    Ich glaube ich muss die Datenbank doch mal neuinstallieren...

    Was haltet ihr davon?

    Könnten die Fehler vielleicht an mehreren Computerabstürzen während Verwendung der Datenbank liegen?

    WIESO IST MEIN POSTING OHNE DIESE ZEILE UNSAUBER? :-)

    LG Jakob

    --
    Wer andern eine Bratwurst brät, hat meist ein Bratwurstbratgerät!
    1. Halihallo Jakob

      Also: Lasse ich den Querystring aus PHP laufen, gibt es auch keine Ausgabe bzw. Fehlermeldung.

      Was denn nun? - Keine Ausgabe, dann hast du keine Daten in der DB   oder
      eine Fehlermeldung, die du uns vorenthälst?

      Interessant wäre auch ein kleiner Codeausschnitt.

      Ich glaube ich muss die Datenbank doch mal neuinstallieren...
      Was haltet ihr davon?

      Das du vor dem eigentlichen Problem flüchtest. Es liegt nur mit einer sehr geringen
      Wahrscheinlichkeit ber der internen Funktionsweise der Datenbank.

      Könnten die Fehler vielleicht an mehreren Computerabstürzen während Verwendung der Datenbank liegen?

      Denkbar ist alles, nur ist die Wahrscheinlichkeit wesentlich grösser, dass _du_ einen
      Fehler gemacht hast bzw. etwas übersehen hast.

      Viele Grüsse

      Philipp

      1. Hi,

        Ich hab da ein paar Daten in der DB (hab ich extra nachgeguckt)

        Hier trotzdem die Programmroutine:

        if($action!="sort")
        {
        $selectthreads="SELECT * FROM board_threads WHERE board LIKE ".$boardid." LIMIT ".$threadstart.", ".$threadsperpage." ORDER BY akdatum DESC";
        print $selectthreads;
        $doselectthreads=mysql_query($selectthreads,$dbconn);
        }

        $threadstart und $threadsperpage sind vorher definiert...

        LG Jakob

        --
        Wer andern eine Bratwurst brät, hat meist ein Bratwurstbratgerät!
        1. Hi,

          ich glaube, ich hab den Fehler: PHPMyAdmin hängt immer automatisch "LIMIT 0,30" dran...

          Liegt wohl daran, danke für eure Hilfe :-)

          LG Jakob

          --
          Wer andern eine Bratwurst brät, hat meist ein Bratwurstbratgerät!
          1. Hi,

            mein Freudentaumel hat nicht lange anhalten, da es offline nicht klappt... (habs auf meinem Tripodaccount getestet)

            Ich komm wohl nicht ums neuinstallieren drum herum?

            --
            Wer andern eine Bratwurst brät, hat meist ein Bratwurstbratgerät!
            1. Halihallo Jakob

              mein Freudentaumel hat nicht lange anhalten, da es offline nicht klappt... (habs auf meinem Tripodaccount getestet)

              Was? - Über phpMyAdmin oder das Script?

              Ich komm wohl nicht ums neuinstallieren drum herum?

              Und noch einmal: Lass die liebe Datenbank in Ruhe! :-)
              Sieh mal in deiner config.inc.php? Datei, wo dein phpMyAdmin liegt nach. Was steht da
              bei $cfg['MaxRows'] ?
              Was wird für eine Fehlermeldung angezeigt, was hat nicht geklappt, wieviele Records
              werden angezeigt, hast du auch Daten offline??? - Fragen über Fragen, die ich eigentlich
              nicht hätte stellen müssen, wenn du dein Problem genauer beschrieben würdest, denn dann
              und frühestens dann ist man fähig dir zu helfen.

              Viele Grüsse

              Philipp

              1. Hi,

                Was? - Über phpMyAdmin oder das Script?

                eigentlich über meine DB, denn offline funktionierts ja nicht...
                Ich kann mein Problem leider nicht genauer erläutern, da ich (wie schon gesagt) keine Fehlermeldung erhalte. Den Code hatte ich ja schon gepostet und er ist ja auch korrekt...

                Hattest du so was ähnliches auch schonmal?

                LG Jakob

                --
                Wer andern eine Bratwurst brät, hat meist ein Bratwurstbratgerät!
                1. Halihallo Jakob

                  Was? - Über phpMyAdmin oder das Script?
                  eigentlich über meine DB, denn offline funktionierts ja nicht...

                  Was heisst über die DB? - Die Konsole, dein Script oder phpMyAdmin? Wo gibst du den
                  Query ein, PHP denke ich?

                  Ich kann mein Problem leider nicht genauer erläutern, da ich (wie schon gesagt) keine Fehlermeldung erhalte. Den Code hatte ich ja schon gepostet und er ist ja auch korrekt...

                  Hab grad nochmals nachgesehen, bis auf das Faktum, das LIMIT gefälligst an das Ende
                  des Queries gehört und nicht inmitten ist alles IO so weit ich sehe.

                  Hattest du so was ähnliches auch schonmal?

                  Nein, aber glaube mir, dass dies nichts damit zu tun hat, dass die Datenbank bei mir
                  funktioniert; das tut sie nämlich auch bei dir...

                  ---

                  Ich hatte es dir schon gesagt und ich sage es noch einmal: Beantworte _alle_ Fragen und
                  beschreibe das Problem, ich sitze hier wohl vielleicht einige hundert Kilometer
                  entfernt von dir und das kompliziert die Sache dahingehend, dass ich deinen Bildschirm
                  nicht sehe. Also behandle mich wie ein Blinder und sag endlich, was du eingibst, wo
                  du dies eingibst, was für Fehler auftauchen, oder wenn nicht, was es deiner Meinung nach
                  hätte ausgeben sollen. Ich kann mit deinen Beschreibungen nichts anfangen wie du merkst,
                  es sollte in deinem Interesse stehen, dies zu ändern.
                  Fazit: Was willst du machen, was ist deiner Meinung nach die Lösung in SQL formuliert,
                  was wird ausgegeben und worin ist der Unterschied zu deiner Erwartungshaltung
                  manifestiert. Zzgl. allgemeiner Information wie verwendetes OS, DBMS, Version, Program-
                  miersprache und was sonst noch in eine anständige Fehlerbeschreibung gehört.

                  Viele Grüsse

                  Philipp

                  1. Hi,

                    Ich hab die Query in Phpmyadmin getestet, es trat wie gesagt ein Fehler ohne Fehlermeldung auf (wahrscheinlich weil Pma selber LIMIT dranhängt)

                    Wenn ich das Script in PHP einfach ausführe, bekomme ich auch keine Fehlermeldung, jedoch enthält das Ergebnis keine Daten aus der DB.

                    Lasse ich LIMIT weg, geht alles...

                    -----------------------------------
                    Hier der Code ausführlicher:

                    if($action=="sort")
                    {
                    //Je nach Sortierung MYSQL-query erzeugen
                    $selectthreads="SELECT * FROM board_threads WHERE board LIKE ".$boardid." ";
                    $datum=strftime('%d. %B %Y'); //Datum (ohne Zeit) zur Zeitraumangabe

                    switch($sorttime)
                    {
                    case 1:$selectthreads.='AND datum LIKE "%'.$datum.'%" ';break;
                    case 2:$timestamp=time()-(86400*2);print $selectthreads.=' AND timestamp > "'.$timestamp.'" OR timestamp = "'.$timestamp.'"';break;
                    case 3:$timestamp=time()-(86400*3);$selectthreads.=' AND timestamp > "'.$timestamp.'" OR timestamp = "'.$timestamp.'" ';break;
                    case 4:$timestamp=time()-(86400*4);$selectthreads.=' AND timestamp > "'.$timestamp.'" OR timestamp = "'.$timestamp.'" ';break;
                    case 5:$timestamp=time()-(86400*5);$selectthreads.=' AND timestamp > "'.$timestamp.'" OR timestamp = "'.$timestamp.'" ';break;
                    case 6:$timestamp=time()-(86400*10);$selectthreads.=' AND timestamp > "'.$timestamp.'" OR timestamp = "'.$timestamp.'" ';break;
                    case 7:$timestamp=time()-(86400*20);$selectthreads.=' AND timestamp > "'.$timestamp.'" OR timestamp = "'.$timestamp.'" ';break;
                    case 8:$timestamp=time()-(86400*30);$selectthreads.=' AND timestamp > "'.$timestamp.'" OR timestamp = "'.$timestamp.'" ';break;
                    }

                    switch ($sortby)
                    {
                    case 1:$selectthreads.= 'ORDER BY akdatum ';break;
                    case 2:$selectthreads.= 'ORDER BY datum ';break;
                    case 3:$selectthreads.= 'ORDER BY titel ';break;
                    case 4:$selectthreads.= 'ORDER BY clicks ';break;
                    case 5:$selectthreads.= 'ORDER BY name ';break;
                    }

                    $selecthreads.=' LIMIT '.$threadstart.','.($threadstart+$threadsperpage);

                    $doselectthreads=mysql_query($selectthreads,$dbconn);
                    }

                    --------------------------------------

                    In diesem Falle ist $threadstart=0 und $threadsperpage=15.
                    Die DB-Tabelle "board_threads" enthält 6 Einträge.

                    Ich verwende PHP 4 auf einem W(98)AM(3.23.37)

                    Ich kann also wirklich keine genauere Fehlerbeschreibung geben...

                    LG Jakob

                    PS: Was hältst du von einer kleinen  Wette? Wenn das Script nach dem Neuinstallieren läuft, musst du einen kleinen Banner von einer meiner Seiten für eine Woche bei dir draufsetzen, sonst setzte ich bei mir einen drauf :-)

                    --
                    Wer andern eine Bratwurst brät, hat meist ein Bratwurstbratgerät!
                    1. Halihallo Jakob

                      Ich hab die Query in Phpmyadmin getestet, es trat wie gesagt ein Fehler ohne Fehlermeldung auf (wahrscheinlich weil Pma selber LIMIT dranhängt)

                      Das ist schon mal klar, ja.

                      Wenn ich das Script in PHP einfach ausführe, bekomme ich auch keine Fehlermeldung, jedoch enthält das Ergebnis keine Daten aus der DB.

                      so, so, und warum kommen wohl keine Fehlermeldungen? - Weil du nicht darauf prüfst!

                      Lasse ich LIMIT weg, geht alles...

                      Tjo, das is dann doch 'n bissle komisch...

                      [... viel unübersehbarer Code ...]

                      $selecthreads.=' LIMIT '.$threadstart.','.($threadstart+$threadsperpage);

                      Tja, wenn hier ein Fehler sein soll, wäre es IMHO klug sich den generierten Rattenschanz
                      an SQL-Query mal auf dem Monitor ausgeben zu lassen, oder?

                      $doselectthreads=mysql_query($selectthreads,$dbconn);

                      Mei, da aber schnell ne Fehlerbehandlung her!

                      if (!$doselectthreads) {
                         die mysql_error;
                      }

                      Ich kann also wirklich keine genauere Fehlerbeschreibung geben...

                      Naja, Ansichtssache :-)
                      Mal sehen, vielleicht kriegst du ja mit der Korrektur von oben eine Fehlermeldung oder
                      siehst im ausgegebenen Query einen Fehler...

                      PS: Was hältst du von einer kleinen  Wette? Wenn das Script nach dem Neuinstallieren läuft, musst du einen kleinen Banner von einer meiner Seiten für eine Woche bei dir draufsetzen, sonst setzte ich bei mir einen drauf :-)

                      Ich wette grundsätzlich nie, wenn ich unterlegen bin. Du sitzt vor deinem Monitor, nicht
                      ich, das ist höchst unfair :-)

                      Viele Grüsse

                      Philipp

                      1. Moin,

                        Ich hab mir die Query doch ausgeben lassen und ahbe sie dann in PHPmyAdmin eingefügt...

                        Mit deinem Vorschlag, die Fehlermeldungen bei mysql_query ausgeben zu lassen, habe ich berücksichtigt, da kommt jedoch NIX :-)
                        Wäre die Wette fairer, wenn ich dir das komplette Script geben würde (das waren ja nur die relevanten Teile)

                        LG Jakob

                        --
                        Wer andern eine Bratwurst brät, hat meist ein Bratwurstbratgerät!