MySQL Query - Finde den Fehler - ich verzweifel
Phil Z.
- datenbank
Hallo.
Irgendiwe kann ich den Fehler nicht finden.
SELECT artikel, title,
DATE_FORMAT(date,'%W %d.%M %Y') AS date,
author,num
FROM news
ORDER BY date
DESC LIMIT 1,10
Die Fehlermeldung:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY date DESC LIMIT 0, 10' at line 1
Die Spalte "date" ist vom Typ timestamp und enthält Einträge in folgendem Format: "2007-03-29 07:53:01" (ohne "")
Hoffe ihr könnt mir helfen.
mfg
Phil Z.
Hello,
Irgendiwe kann ich den Fehler nicht finden.
Mit welchem Betriebssystem arbeitest du denn?
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom,
--
Fortschritt entsteht nur durch die Aneinanderreihung von sinnlosem
Muell. Selber denken ist fuern Arsch.
Hallo,
Betriebsystem: Windows XP Prof.
Verwendete Sprache: PHP
Verwendetes DBMS: MySQL
mfg
Phil Z.
Gute Tag,
Du bist nicht Thomas Schmieder.
Da das löschen deiner anderen Falschpostings dir offensichlich nicht deutlich genug war, betrachte bitte diese Nachricht all allerletzte Warnung.
Eine weitere wird es von uns nicht mehr geben.
Thomas J. Sebestyen
SELFHTML e.V.
Hi müsste an dem AS alias von date liegen
Probier mal
SELECT artikel, title,
DATE_FORMAT(date,'%W %d.%M %Y') AS date1,
author,num
FROM news
ORDER BY date
DESC LIMIT 1,10
Gruss Uli
Hi müsste an dem AS alias von date liegen
Hey danke, aber daran lags _nicht_.
mfg
Phil Z.
Hallo Philipp,
> DATE_FORMAT(date,'%W %d.%M %Y') AS date,
-- ich schieße mir selbst ins Knie :-)
[...]
> ORDER BY date
nach welcher Spalte "date" möchtest Du sortieren? Nach der Spalte "date" Deiner Tabelle news oder nach der benannten Spalte "date" Deiner Abfrage?
Woher soll MySQL wissen, welche Du meinst, wenn Du es MySQL nicht sagst?
Beseitige dieses Problem.
Ach ja, ich halte den Spaltennamen "date", auch wenn er erlaubt ist, für ungünstig gewählt. Da Du sowieso schon "artikel" verwendest, warum nicht ein einfaches "datum" oder "zeitstempel"?
Freundliche Grüße
Vinzenz
Hallo.
nach welcher Spalte "date" möchtest Du sortieren?
Nach der Spalte "date" meiner Tabelle news.
Woher soll MySQL wissen, welche Du meinst, wenn Du es MySQL nicht sagst?
Beseitige dieses Problem.
Wie? :(
Ach ja, ich halte den Spaltennamen "date", auch wenn er erlaubt ist, für ungünstig gewählt. Da Du sowieso schon "artikel" verwendest, warum nicht ein einfaches "datum" oder "zeitstempel"?
Werde ich ändern.
Freundliche Grüße
Phil Z.
echo $begrüßung;
SELECT artikel, title,
DATE_FORMAT(date,'%W %d.%M %Y') AS date,
author,num
FROM news
ORDER BY date
DESC LIMIT 1,10You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY date DESC LIMIT 0, 10' at line 1
Dein Statement, so wie du es hier veröffentlicht hast, erzeugt keinen Syntax-Fehler (Version 5.0.26). Auch das nicht eindeutige "date" ist nicht für den Syntax-Fehler verantwortlich. (Da wird dann nur nicht wie gewünscht sortiert. Wenn du nach dem Datum sortieren willst, notiere news.date. Wenn du nach dem formatierten Datumsstring sortieren willst, nimm den Alias (so wie jetzt) oder die Spaltennummer als Zahl (also 3 in deinem Fall).) Der in der Fehlermeldung angezeigte Statement-Ausschnitt stimmt zum einen nicht mit deinem angeführten Statement überein, zum anderen ist es wie immer bei Syntax-Fehlern: Sie treten vor der angemeckerten Stelle auf. Suche also in deinem wirklichen an das DBMS gesendete Statement in dem Teil vor dem ORDER BY.
Die Spalte "date" ist vom Typ timestamp und enthält Einträge in folgendem Format: "2007-03-29 07:53:01" (ohne "")
Der letzte Teil der Aussage ist nicht richtig. Die Formatierung, die zur Anzeige verwendet wird, stimmt nicht zwangsläufig mit der internen Datenhaltung MySQLs überein. Wenn du dir mal ansiehst, dass nur 4 Bytes für einen Timestamp verwendet werden und der Wertebereich auffallend einem Unix-Timestamp gleicht, ...
Es reicht also, wenn du bei Datums- und Zeitfeldern den Typ angibst.
echo "$verabschiedung $name";
Hallo.
Wenn du nach dem Datum sortieren willst, notiere news.date.
Hab ich gemacht, klappt immer noch nicht.
Es reicht also, wenn du bei Datums- und Zeitfeldern den Typ angibst.
Wenn ich das wo angebe?
mfg
Phil Z.
echo $begrüßung;
Wenn du nach dem Datum sortieren willst, notiere news.date.
Hab ich gemacht, klappt immer noch nicht.
"Klappt nicht" ist keine Aussage, mit der man was anfangen kann. Bitte beobachte und beschreibe dein "klappt nicht" genauer.
Wenn du immer noch den Syntax-Fehler bekommst, wäre es nun mal an der Zeit, uns das wirklich verwendete Statement zu präsentieren. Hilfreich ist auch die genaue Versionsangabe des MySQL-Servers. (Bitte aus dem phpMyAdmin abschreiben, denn die Angabe aus der phpinfo() ist die Version der dort eingebundenen Client-API, und die muss nicht unbedingt mit der Server-Version übereinstimmen.)
Es reicht also, wenn du bei Datums- und Zeitfeldern den Typ angibst.
Wenn ich das wo angebe?
Angeben meinte ich im Sinne von jemandem (z.B. uns) darüber erzählen.
echo "$verabschiedung $name";
Hallo,
PHP Version 5.2.0
Build Date Nov 2 2006 11:50:55
Server API Apache 2.0 Handler
PHP API 20041225
PHP Extension 20060613
Zend Extension 220060519
Sie Spalte heißt "datum" und ist vom Typ "timestamp".
Fehler:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY news.datum DESC LIMIT 0, 10' at line 1
PHP Auszug:
$artikel_anz_start=0;
$artikel_anz_end=10;
$table3='news';
// News auslesen
$sql="SELECT artikel, title, DATE_FORMAT(datum,'%W %d.%M %Y') AS date1, author,num FROM ".$table3." ORDER BY news.datum DESC LIMIT ".$artikel_anz_start.", $artikel_anz_end";
$row=mysql_query($sql) or die(mysql_error());
Hoffe es hilft weiter.
mfg
Phil Z.
echo $begrüßung;
PHP Version 5.2.0
Das PHP ist bei deinem Problem nebensächlich. Du bekommst eine MySQL-Fehlermeldung, also hat MySQL ein Problem. Und um dieses genau nachzustellen benötigt man mitunter die gleiche MySQL-Version.
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY news.datum DESC LIMIT 0, 10' at line 1
PHP Auszug:
Gefragt war nicht nach PHP-Code, der ein Statement zusammensetzt, sondern das zusammengesetzte Statement selbst. In deinem Fall also die Ausgabe des Inhalts von $sql. Das von deinem hier gezeigten PHP-Code erzeugte Statement erzeugt bei mir immer noch keinen Syntaxfehler. Schau also bitte nach, was ein echo $sql; ergibt. Wenn du daran nichts Fehler Verursachendes erkennen kannst, hilft es, den String mal durch urlencode() zu schicken, um somit möglicherweise sich als Leerzeichen getarnte Steuerzeichen besser erkennen zu können.
Noch etwas Nebensächliches, was nicht mit deinem Fehler oder dessen Behebung zusammenhängt:
$sql="SELECT artikel, title, DATE_FORMAT(datum,'%W %d.%M %Y') AS date1, author,num FROM ".$table3." ORDER BY news.datum DESC LIMIT ".$artikel_anz_start.", $artikel_anz_end";
Ein in "" eingefasster String ist in der Lage, Variablen aufzulösen. Meiner Meinung nach ist es unübersichtlich, einerseits einen ""-String zu verwenden, anderersets seine Eigenschaften nicht zu auszunutzen. Durch das Rein-Raus hat man mehr Zeichen zu verwenden, was schon wieder eine potenzielle Syntaxfehlerquelle ist, diesmal aber eine die das PHP betrifft. Du hältst auch das String-Beenden-und-Variable-Anknüpfen nicht konsequent durch, denn $artikel_anz_end ist noch im String verblieben. Zur sonst von mir propagierten sprintf()-Funktion rate ich dir in diesem Fall nicht, weil du sonst für die %-Zeichen der DATE_FORMAT-Funktion Gegenmaßnahmen einleiten müsstest. Man könnte auch diesen Format-String zur Variable machen, und hat, falls mehrere SQL-Staments mit dieser Formatierung verwendet werden, dann nur eine Stalle zu ändern, wenn sich mal eine Änderung des Formats ergibt, ... aber das sind nur Nebensächlichkeiten, die du nicht weiter betrachten solltest, bevor du nicht dein eigentliches Problem gelöst hast.
echo "$verabschiedung $name";
Hi,
Und um dieses genau nachzustellen benötigt man mitunter die gleiche MySQL-Version.
mysql Client API version 5.0.27
Gefragt war nicht nach PHP-Code, der ein Statement zusammensetzt, sondern das zusammengesetzte Statement selbst. In deinem Fall also die Ausgabe des Inhalts von $sql. Das von deinem hier gezeigten PHP-Code erzeugte Statement erzeugt bei mir immer noch keinen Syntaxfehler. Schau also bitte nach, was ein echo $sql; ergibt. Wenn du daran nichts Fehler Verursachendes erkennen kannst, hilft es, den String mal durch urlencode() zu schicken, um somit möglicherweise sich als Leerzeichen getarnte Steuerzeichen besser erkennen zu können.
Wenn ich echo $sql ausgebe:
"SELECT artikel, title, DATE_FORMAT(datum,'%W %d.%M %Y') AS date1, author,num FROM ORDER BY news.datum DESC LIMIT 0, 10"
Wenn ich echo urlencode($sql) ausgebe:
SELECT+artikel%2C+title%2C+DATE_FORMAT%28datum%2C%27%25W+%25d.%25M+%25Y%27%29+AS+date1%2C+author%2Cnum+FROM++ORDER+BY+news.datum+DESC+LIMIT+0%2C+10
Ich sehe keine Fehler :(
mfg
Phil Z.
Hi Phil,
Wenn ich echo $sql ausgebe:
"SELECT artikel, title, DATE_FORMAT(datum,'%W %d.%M %Y') AS date1, author,num FROM ORDER BY news.datum DESC LIMIT 0, 10"
FROM___ORDER BY
das fehlt die Tabelle!
ciao
romy
Hi.
Den Fehler mit dem Tabellen Namen, hab ich behoben aber nun:
$sql="SELECT artikel, title, DATE_FORMAT(datum,'%W %d.%M %Y') AS date1, author,num FROM news ORDER BY news.datum DESC LIMIT ".$artikel_anz_start.", $artikel_anz_end";
echo $sql:
SELECT artikel, title, DATE_FORMAT(datum,'%W %d.%M %Y') AS date1, author,num FROM news ORDER BY news.datum DESC LIMIT 0, 10
echo urlencode($sql):
SELECT+artikel%2C+title%2C+DATE_FORMAT%28datum%2C%27%25W+%25d.%25M+%25Y%27%29+AS+date1%2C+author%2Cnum+FROM+news+ORDER+BY+news.datum+DESC+LIMIT+0%2C+10
Fehler:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
mfg
Phil Z.
Hallo lieber Sebastian
oh lieblicher Graus, welch Schandtat hat sich bloss verbreitet.
Das Ungefuehl der verdorbenen Welt tuermt sich zu lebhaften Fassaden
auf, deren Ausmassen selbst in fremden Galaxien ins Unheimliche
erscheinen moegen. Fern ab jeglicher Wahrnehmung, gezielt vorbei
an unzumutbaren Unannehmlichkeiten, deren Vollendung noch gaenzlich
nicht ausgeschoepft zu sein scheinen. Wie, ach wie! koennte man bloss
misswillige Absichten interpretieren, deren Sinn und Zweck die
reine Blossstellung eines armen Geschoepfes als solches zu beinhalten
vermag. Nun, du armer Thor, sage es mir und meine ach so grausame
Existenz wird wieder eines Sinnes erfahren.
by the way: Urinier dir in die Hose!
HaHi & Ho
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
--
Fortschritt entsteht nur durch die Aneinanderreihung von sinnlosem
Muell. Selber denken ist fuern Arsch.
<ZENSIERT>
Das ach so kulge Logo wurde aus urheberlichen Gruenden, und auf
Grund nicht vorhandener Intelligenz des Anwaerters respektive des
Beeinhalters ausgeblendet, ferner nicht angezeigt.
</ZENSIERT>
Oh, ihr rudimentaere SELFhtml Genossen, eure lachhafte Anschaulichkeit
wurden eines weiteren Falles entbloesst. Hinfort mit euch - so loeschet
auch diese Posting und bedeutet eure Unfaehigkeit der geistlichen
Konfrontation. Umarmet euch einander, so dass kein fremdliches
Geschoepf eure schwulen Umarmungen erahnen kann. HTML ist das
Synonym der Welt - Kampf gegen Sozialitaet und innermenschlichen
Kontaktes. Nur elektronische Kommunikation soll sich des Elends
beheben - Menschlichkeit das Fremdwort der hiesigen Antragssteller-
und Befuerworter.
Hi,
alle Probleme gelöst, danke an alle!
mfg
Phil Z.