syntax fehler subtraktion in mysql abfrage

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • syntax fehler subtraktion in mysql abfrage

    Meine Abfrage lautet:

    PHP-Code:
    $s mysql_query("SELECT COUNT(id) AS num FROM users
    WHERE (
    $topical_year - substr(birthdate,7,4)) < '18' AND
    birthdate != '' ORDER BY id"
    ) or die (mysql_error()); 
    MySQL meldet hier:

    PHP-Code:
    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 '(birthdate,7,4)) < '18' AND
    birthdate != '' ORDER BY id' 
    at lin 
    Bei mir auf dem lokalen Rechner funktioniert es.
    Was ist hieran ($topical_year - substr(birthdate,7,4)) < '18' falsch??

  • #2
    zeig doch die query, wie sie an die db geschickt wird.

    1. die spalte birthdate sollte von einem datumtyp sein, dann brauchst du keinen string darauszufiltern.

    2. 18 ist eine zahl, kein string.

    Kommentar


    • #3
      Danke für die Antwort penizillin.

      zeig doch die query, wie sie an die db geschickt wird.
      - Wie mache ich das (sorry für die dumme Frage)?

      1. die spalte birthdate sollte von einem datumtyp sein, dann brauchst du keinen string darauszufiltern.
      - Im Format DATETIME?

      2. 18 ist eine zahl, kein string.
      - , sehe ich ein *lach*.

      Kommentar


      • #4
        Wie mache ich das (sorry für die dumme Frage)?
        Da fehlen mal wieder die grundlagen. Wer tatsächlich weiß, was ne query ist, kann sie auch ausgeben.

        echo $s.

        Im Format DATETIME?
        ja, könnte man. ich gehe aber nicht davon aus, dass du die Urzeit speichern willst.

        Kommentar


        • #5
          Okay, angenommen ich speichere mein Datum nun in dem Format
          0000-00-00, dann kann ich doch immer noch nicht das Datum
          vernünftig vom aktuellen Datum subtrahieren, ohne dass ich
          den Code verwende, wie ich ihn jetzt bereits habe.
          Ich müsste doch so oder so substr() verwenden, um
          nur das Jahr zu erhalten, aber gerade da liegt der Syntaxfehler...
          18 habe ich nun als String ($age) formuliert, daran liegt es nicht.

          Kommentar


          • #6


            Schau mal die Date and Time Funktionen von MySQL an...

            Kommentar


            • #7
              soviel unfug auf einmal bekommt man selten zu lesen...
              Ich müsste doch so oder so substr() verwenden, um
              nur das Jahr zu erhalten, aber gerade da liegt der Syntaxfehler...
              die antwort steht im manual, und da soll man _immer_ reinschauen, wenn man etwas wissen wollen. was soll an dem format denn sonst besser sein, wenn man gleichen unsinn mit strings verwenden muss wie du bis jetzt?
              18 habe ich nun als String ($age) formuliert, daran liegt es nicht.
              genau das war ja falsch und ich habe dir gesagt, dass 18 eine zahl ist und kein string. was für eine rolle spielt denn die tolle variable dabei?

              Kommentar


              • #8
                Entschuldigung, ich danke euch trotzdem für eure Mühen.
                Ich werde mich mal durch den Dschungel begeben
                und hoffentlich eine Lösung finden...

                Kommentar


                • #9
                  Die Antwort auf alle Fragen meinerseits, für alle:
                  PHP-Code:
                  //birthdate im DATE Format 0000-00-00
                  $s mysql_query("SELECT COUNT(id) AS num FROM users
                  WHERE YEAR(CURRENT_DATE)-YEAR(birthdate) < '18' AND
                  birthdate != '' ORDER BY id"
                  ) or die (mysql_error()); 

                  Kommentar


                  • #10
                    18 ist zwar immer noch ein Integer, aber da bleibst du wohl unbelehrbar...

                    Kommentar

                    Lädt...
                    X