[MySQL 4.1] Fehler 1064 beim ändern der Daten

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

  • [MySQL 4.1] Fehler 1064 beim ändern der Daten

    Hallo Ihr Spezialisten,

    ich habe ein Problem welches sich völlig meiner logischen Fehleranalyse entzieht.
    Mit folgender Anweisung fügen ich Daten in meine MySQL-Db ein:

    $result = @mysql_query("update products set info='hier stehen die Daten' where id=1);

    Also eine ganz banale SQL-Anweisung, die auch so weit läuft, so lange der Text im Feld info eine bestimmte Länge nicht überschreitet. Auch hier gibt es keinen logischen Zusammenhang. Bei einem bestimmten Text (HTML-Code) liegt die Grenze bei 950 Zeichen. Füge ich nur ein Zeichen mehr ein, erhalte ich folgende Fehlermeldung:

    1064: 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 ''

    Ich habe zuerst gedacht es liegt hat den ganzen HTML-Tags. Habe dann einmal nur Buchstaben überschrieben, da waren es dann nur 868 Zeichen die übergeben werden konnten -> selbe Fehlermeldung.

    Das kuriose ist, wenn ich dann die "fehlerhafte" SQL-Anweisung mit einem MySQL QueryBrowser ausführe, werden die Daten in die Datenbank geschrieben. Führe ich die Anweisung mittels PHP-Code aus, dann nicht.
    Das Problem tritt sowohl auf meinem Test-Rechner mit einem localen Apache und MySQL,
    also auch Online auf dem Server auf.

    Wie gesagt, ich habe keine Idee? Vielleicht irgendwelche Cache Parameter o.ä. was man setzen muss?
    Hat jemand eine Idee?

    Viele Grüße

    Ralf Smolin

  • #2
    Dir fehlt ein " vor der schließenden Klammer!

    Übrigens lies das: http://php-resource.de/forum/showthr...threadid=47906
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      > Dir fehlt ein " vor der schließenden Klammer!

      Ja, danke. Habe ich beim Schreiben dieses Beitrags vergessen.
      Das hat aber nichts mit dem Problem an sich zu tun.

      Ralf

      Kommentar


      • #4
        Mach mal das @ weg, lass dir deine Query mal ausgeben und der Fehler findet sich schneller!
        Ich schätze, bei deiner Variablenübergabe geht was schief.
        it's not a bug,
        it's a feature!

        Kommentar


        • #5
          > Mach mal das @ weg, lass dir deine Query mal ausgeben und der Fehler
          > findet sich schneller!

          Das @ habe ich weggelassen. Der Fehler bleibt.
          Den Query habe ich mir anzeigen lassen und siehe da, die ID wird
          nicht mit ausgelesen.
          Ich habe jetzt praktisch ein: update products set info='123' where ID=
          und dann hört’s auf.

          Wie kann ich meine SQL Anweisung auf dem Server einlesen, auch bei
          größeren Strings? Meine Vorgehensweise ist folgende: Ich schreibe die SQL Anweisung in eine Datei, laden Sie auf den Server, dann rufe ich eine PHP-Seite auf die die Datei einließt und die SQL-Anweisungen ausführt.
          Ich beschäftige mich noch nicht sehr lang mit PHP und MySQL. Gibt es
          einen intelligenteren, besseren Weg Daten in die MYSQL-DB zu übertragen?

          Viele Grüße

          Ralf

          Kommentar


          • #6
            Meine Vorgehensweise ist folgende: Ich schreibe die SQL Anweisung in eine Datei, laden Sie auf den Server, dann rufe ich eine PHP-Seite auf die die Datei einließt und die SQL-Anweisungen ausführt.

            wie bitte? warum definierst du die abfrage nicht direckt in php? z.b.
            PHP-Code:
            $query "update products set info='hier stehen die Daten' where id=$id";
            $result mysql_query($query); 
            eine mysqlabfrage ist nichts anderes als eine stinknormale zeichenkette.

            gruß
            peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #7
              > wie bitte? warum definierst du die abfrage nicht direckt in php? z.b.

              Ich habe ein Offline-Tool geschrieben, mit dem man die Daten erfassen kann. Jetzt geht es darum diese Daten in die MySQL-DB auf dem Server zu quetschen.

              Aber ich glaube ich habe das Problem gefunden.
              Hiermit lese ich die Datei aus:

              $data = fgetcsv ($handle, 1000, "|")

              Diese 1000 ist der springende Punkt. Hier muss ich einfach einen
              größeren Wert nehmen.

              Du hast mich aber mit deinen Hinweise an diese Stelle geführt.
              Danke.

              Viele Grüße

              Ralf

              Kommentar


              • #8
                mach doch aus der 1000 ein filesize($datei_name)

                gruß
                peter
                Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                Meine Seite

                Kommentar


                • #9
                  Hallo Peter,

                  > mach doch aus der 1000 ein filesize($datei_name)

                  Das geht leider nicht. Es stehen mehrere SQL-Anweisungen in der Datei und ich habe gemerkt, je größer dieser Wert ist, desto länger dauert die
                  Verarbeitung.
                  Ich muss nur eine halbwegs vertretbare Textlängen-Begrenzung wählen.

                  Danke.

                  Kommentar


                  • #10
                    ich verstehe immer noch nicht, warum du deine sql-befehle in riesig große textdateien packst. das erscheint mir als die unpraktikabelste lösung überhaupt.

                    gruß
                    peter
                    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                    Meine Seite

                    Kommentar


                    • #11
                      Hallo Peter,

                      > ich verstehe immer noch nicht, warum du deine sql-befehle in riesig
                      > große textdateien packst. das erscheint mir als die unpraktikabelste
                      > lösung überhaupt.

                      Wie schon gesagt, habe ich noch nicht viel Erfahrung mit PHP und MySQL und wenn es eine intelligentere Lösung gibt, lass es mich bitte wissen.
                      Ich habe lokale Daten in einer Access-DB, diese möchte ich exportieren und
                      auf dem Server in eine MySQL DB mittels PHP importieren.
                      Zurzeit realisiere ich das über eine Datei die ich lokal erstellen, auf den Server lade und dort mittels PHP die ganzen SQL-Anweisungen einlese und ausführe.
                      Ich denke (hoffe) das es einen besseren Weg gibt, aber da fehlt mir noch die Erfahrung. Wenn du also einen Tipp für mich hast wie es besser geht,
                      lass es mich ruhig wissen.

                      Danke.

                      Viele Grüße

                      Ralf

                      Kommentar


                      • #12
                        Hallo Ralf,

                        ich kenne mich nicht wirklich mit Access aus, aber gibt es da keine Möglichkeit, einen MySQL-kompatiblen Dump zu erstellen?
                        Den könntest Du dann doch einfach über bspw. PMA importieren. Vielleicht habe ich Dich ja falsch verstanden, aber für mich
                        sieht es so aus, als versuchtest Du, genau das nachzubauen.

                        LG

                        Kommentar


                        • #13
                          > ich kenne mich nicht wirklich mit Access aus, aber gibt es da keine
                          > Möglichkeit, einen MySQL-kompatiblen Dump zu erstellen?
                          > Den könntest Du dann doch einfach über bspw. PMA importieren.
                          > Vielleicht habe ich Dich ja falsch verstanden, aber für mich
                          > sieht es so aus, als versuchtest Du, genau das nachzubauen.

                          Nein, geht leider nicht. Die Datenbanken sind nicht identisch. Es sollen nur
                          bestimmte Teile aus der Access-DB in die MySQL-DB. Da die Datenbanken
                          nicht identisch sind bastelte ich lokal die SQL-Anweisungen mit den entsprechenden Daten zusammen und muss sie dann zum Server schicken.
                          Wie gesagt, wenn es besser geht, für Hinweise bin ich dankbar.

                          Viele Grüße

                          Ralf

                          Kommentar


                          • #14
                            D.h. Du willst aus einer Tabelle nur die neuesten Datensätze exportieren. Wenn Du das lokal schon aus Deiner Access DB herausbekommst, musst Du doch nur noch darauf achten, das in einem Format zu speichern, das Du auf Deinem Zielserver importieren kannst. Cocoa kann z.B. auch CSV-Dateien importieren. Allerdings bestehen CSV-Dateien nicht aus SQL-Statements sondern aus Colon Separated Values. Du kannst also entweder einen (Teil-)Dump erstellen, indem Du SQL-Statements speicherst, oder Du erzeugst eine CSV-Datei mit den Datensätzen. Ob PMA das importieren kann, weiss ich gerade nicht, musst Du mal schauen.

                            LG

                            Kommentar


                            • #15
                              > speicherst, oder Du erzeugst eine CSV-Datei mit den Datensätzen. Ob
                              > PMA das importieren kann, weiss ich gerade nicht, musst Du mal schauen.


                              CSV kenne ich. Aber was ist PMA? Gibt es "Schnittstellen" oder Funktionen um CSV-Dateien mittels PHP aus- bzw. in MySQL einzulesen?

                              Viele Grüße

                              Ralf

                              Kommentar

                              Lädt...
                              X