Phil Z.: MySQL Query - Finde den Fehler - ich verzweifel

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.

  1. 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.
    

    1. Hallo,

      Betriebsystem: Windows XP Prof.
      Verwendete Sprache: PHP
      Verwendetes DBMS: MySQL

      mfg

      Phil Z.

    2. 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.

  2. 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

    1. Hi müsste an dem AS alias von date liegen

      Hey danke, aber daran lags _nicht_.

      mfg

      Phil Z.

  3. 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

    1. 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.

  4. 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,10

    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

    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";

    1. 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.

      1. 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";

        1. 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.

          1. 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";

            1. 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.

              1. 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

                1. 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.

  5. 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.

  6. Hi,

    alle Probleme gelöst, danke an alle!

    mfg

    Phil Z.