SQL-Abfrage abspeichern...

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

  • SQL-Abfrage abspeichern...

    Hallo,

    ich möchte eine SQL-Abfrage in einer MySQL-Tabelle abspeichern, um sie später wieder auszulesen. Die Abfrage ändert sich mit den Einstellungen des Nutzers.

    Leider kann ich die Abfrage nicht speichern, einfache Worte wie 'test' lassen sich ohne probleme mit den Einstellungen speichern. Also scheint es wohl an den Einstellungen in der MySQL-Tabelle zu liegen, der PHP-Teil sollte so weit in Ordnung sein.
    Die Tabelle heißt 'userdata', die Spalte heißt 'mydates' und ist vom Typ CHAR.
    Den Code habe ich mal gepostet, hoffentlich kann mir jemand helfen.

    ...

    #Zusammensetzen der SQL-Abfrage.

    $result = mysql_query("SELECT * FROM termine WHERE 1 $query_semester $query_terminart $query_person $query_zeitraum $query_suchbegriff");

    $zeilen = mysql_num_rows($result);

    $result = mysql_result($result, 0);

    $abfrage = "SELECT * FROM termine WHERE 1 $query_semester $query_terminart $query_person $query_zeitraum $query_suchbegriff";

    echo "$abfrage";


    #Anzahl der passenden Datensätze

    if ($anzahl > 0) {
    echo "<br><br>";
    echo "Ihre Suche hat $anzahl Treffer ergeben.";
    echo "<br><br>";

    echo "$Username";

    #Speichern der spezifischen SQL-Abfrage

    @mysql_query("UPDATE userdata SET mydates = '$abfrage' WHERE loginname = '$Username'") OR DIE ("Keine Eintragung in die Datenbank möglich.");

    echo "<br><br>";
    echo "Ihre MyDates-Einstellungen wurden erfolgreich gespeichert.";
    }



    else
    {
    echo "<br><br>";
    echo "Zu ihrer Suchanfrage konnte leider kein Termin gefunden werden. Bitte versuchen sie eine andere Auswahl.";

    }

    ...

    Besten Dank im voraus!

    Gruß

    Daniel

  • #2
    wie sieht denn im reintext dein sql statement aus? ich glaube eher die sql Syntax is falsch denn das eintragen sollte ganz normal funzen
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      Aber gerne... :-)

      Hallo,

      hier ein Beispiel für eine zu speicherne SQL-Abfrage:

      SELECT * FROM termine WHERE 1 AND semester like '%' AND terminart like '%' AND person like '%' AND datum > 1900-01-01 AND ort like '%%'

      Die reine SQL-Anfrage würde dann so aussehen:

      UPDATE userdata SET mydates = 'SELECT * FROM termine WHERE 1 AND semester like '%' AND terminart like '%' AND person like '%' AND datum > 1900-01-01 AND ort like '%%'' WHERE loginname = 'test'

      Den zu speichernden Teil kann ich nur in einfache Hochkommas setzen, da ich sonst einen PHP-Syntaxfehler bekommen.

      Danke schon mal.

      Gruß

      langerxxx

      Kommentar


      • #4
        ja is klar die einfachen hochkommata beendest Du schon frühzeitig
        nimm mal ein slash vor die kommata in deinem sql statement das du einfügen willst
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar


        • #5
          ...

          Was bewirkt denn dieser Slash dabei?
          Wie kann ich denn Slash denn setzen, ich baue die Anfrage ja aus Variablen zusammen??

          Gruß

          langerxxx

          Kommentar


          • #6
            sorry backslash.
            Du musst Dein SQL statement so aussehen lassen:
            UPDATE tbl SET COL = 'SELECT \'bla\' FROM tbl2'
            wenn die ' aus variablen kommen musst Du sie halt dort mit \' ersetzen
            wenn du esowas machst:
            UPDATE tbl SET COL = 'SELECT 'bla' FROM tbl2'
            Dann gibts ein sql fehler weil das sql syntaktisch nach = beendet ist weil dort ein ' kommt
            Beantworte nie Threads mit mehr als 15 followups...
            Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

            Kommentar


            • #7
              CHAR kann maximal 255 Zeichen speichern. Ändere den Typ der Spalte besser in TEXT oder BLOB.

              zum Speichern von mysql-Sonderzeichen (wie Anführungszeichen) gibt es die Funktion mysql_escape_string.

              Das ist bisher deine Query zum Eintragen der Query:
              mysql_query("UPDATE userdata SET mydates = 'SELECT * FROM termine WHERE 1 AND semester like '%' AND terminart like '%' AND person like '%' AND datum > 1900-01-01 AND ort like '%%'' WHERE loginname = 'test'");

              So sollte das aussehen
              $query = mysql_escape_string("SELECT * FROM termine WHERE 1 AND semester like '%' AND terminart like '%' AND person like '%' AND datum > 1900-01-01 AND ort like '%%'");
              mysql_query("UPDATE userdata SET mydates='$query' WHERE loginname = 'test'");

              @MelloPie: Die Dinger \\\ heißen Backslashes. Slashes sind die forward slashes: ///
              mein Sport: mein Frühstück: meine Arbeit:

              Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

              Kommentar


              • #8
                Huchu... :-)

                @titus
                Perfekt, vielen Dank. War genau das, was mir gefehlt hat!

                Gruß

                langerxxx

                Kommentar

                Lädt...
                X