MYSQL: LIMIT funktioniert nicht (jedoch keine Fehlermeldung)
Jakob Schneider
- datenbank
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
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
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
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
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
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
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
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
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
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?
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
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
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
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 :-)
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
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