Sonderzeichen

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

  • Sonderzeichen

    Hallo
    Ich habe grosse Probleme, Texte mit mit einfachen und doppelten Anführungszeichen in die Access-Datenbank abzulegen und nachher auch wieder anzuzeigen. Der SQL-Befehl akzeptiert diese Zeichen nicht, genausowenig wie den Backsslash. Bis jetzt habe ich nirgends einen Artikel gefunden, der sich genau diesem Thema widmet.
    Hat jemand einen Tipp?
    Gruss
    Borsi

  • #2
    ACCESS im php-forum???
    schaue mal beim SQL-forum hier nach. da könntest du was finden.

    ansonsten kurzer tipp. escape die zeichen doch einfach.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Hallo Abraxax

      Aus dem Zeichen Anführungszeichen mach §§.
      Aus dem doppelten Anführungszeichen mach çç.
      Und vor der Anzeige der Daten wieder retourverwandeln.
      Könnte so die Lösung aussehen?
      Gruss
      Borsi

      Kommentar


      • #4
        das wäre eine idee.

        aber was ist mit \" oder \' als escape

        müsste doch auch in ACCESS gehen.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          meinte

          Code:
          \" oder \\'
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            Ich hab mit addslashes den Backslash hinzugefügt. Aber dann krieg ich immer folgende Meldung:

            Warning: SQL error: [Microsoft][ODBC Microsoft Access Driver] Syntaxfehler (fehlender Operator) in Abfrageausdruck ''15\"-Zoll Fr. 1\'000.-', ''

            Auch ohne addslashes gibts diese Meldung.

            Kommentar


            • #7
              schicke mal den dazugehörigen code zum fehler.
              danke
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                ok

                $kunde = $_POST["kunde"];
                $name = htmlentities($_POST["name"]);
                $name = addslashes($name);
                $strasse = htmlentities($_POST["strasse"]);
                $ort = htmlspecialchars($_POST["ort"]);
                $url = htmlspecialchars($_POST["url"]);
                $sql = "INSERT INTO Adressen (Name, Strasse, Ort, URL, Kunde)";
                $sql .= "VALUES ('$name', '$strasse', '$ort', '$url', '$kunde')";
                odbc_exec($id, $sql);
                odbc_close($id);

                Kommentar


                • #9
                  schreib es mal so

                  PHP-Code:
                  .
                  .
                  $sql .= "VALUES ('".$name."', '".$strasse."', '".$ort."', '".$url."', '".$kunde."')";
                  .

                  oder so

                  PHP-Code:
                  .
                  .
                  $sql .= "VALUES ('".urlencode($name)."',
                                   '"
                  .urlencode($strasse)."',
                                   '"
                  .urlencode($ort)."',
                                   '"
                  .urlencode($url)."',
                                   '"
                  .urlencode($kunde)."')";
                  .

                  klappt es?
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #10
                    Hallo Abraxax

                    <klappt es?>
                    Jain.

                    Grundsätzlich klappt es, die Lösung hat aber viele Nachteile:

                    1. In der DB heissen die Einträge jetzt %3b%3bBeat ....
                    Um die Daten ausserhalb der Internetwelt zu verwenden also unbrauchbar.

                    2. Durch diese Umschreibung werden die Feldinhalte viel grösser. Ich müsste x-Datenbanken die Felderlänge wesentlich vergrössern.

                    Am Schluss bleibt mir nur die Möglichkeit die erwähnten Sonderzeichen einfach zu unterdrücken.

                    Borsi

                    Kommentar


                    • #11
                      ok.
                      also technich klappt es ja, nur logisch nicht.

                      eine erweiterung der felder macht in der tat keinen sinn, da dadurch wieder mehr speicher verbraucht würde.

                      ich hoffe, du findest eine bessere lösung, ohne auf sonderzeichen verzichten zu müssen.

                      gruß
                      Abraxax
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar


                      • #12
                        Hallo Abraxax

                        Wenn am Schluss keine Lösung richtig befriedigt, nimmt man halt die mit den wenigsten Kompromissen.
                        Wie dem auch sei, ich danke Dir herzlichst für Deine Hilfe!

                        Gruss
                        Borsi

                        Kommentar


                        • #13
                          Hi

                          ich habe ein ähnliches folgendes Problem:

                          bei uns wurden dummerweise Umlaute in den FELDnamen der Access-Tabellen verwendet: [gültig_von], [gültig_bis]

                          ich habe nun in PHP ein statement:

                          $sql = "SELECT ... ".
                          "FROM ...".
                          "WHERE FeldX BETWEEN gültig_von AND gültig_bis;";

                          Beim odbc_exec()-Aufruf erhalte ich den Fehler:
                          Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][ODBC Microsoft Access Driver] 2 Parameter wurden erwartet, aber es wurden zu wenig Parameter ?ben., SQL state 07001 in SQLExecDirect in ...

                          Mache ich aus ü in den feldern ue dann funzt es. Doch ich kann die Datenstruktur nicht ändern, da gibt es KEINE MÖGLICHKEIT. Ich muss also jetzt ein SQL-Statement absetzen, welches diese Umlaute enthält. Habe es auch schon mit &uuml; versucht, nix!

                          Jemand ne Idee, wie das korrekte SQL-Statement nun MIT ü aussehen muss?

                          cheerioh & danke
                          SiS

                          Kommentar


                          • #14
                            Wer das verbrochen hat, gehört entlassen!

                            Versuch es mal mit
                            ... `gültig_von` AND `gültig_bis`

                            Kommentar


                            • #15
                              japp, die iss nimma da

                              Nein, ehm mit "ich habe es schon mit ü versucht" meinte ich uuml-dingsbums. Gar nicht gesehen, dass dies &uuml ; in ü umgewandelt wurde

                              cheerioh SiS

                              @nerd: nö funtz leider auch nicht - noch eine Idee?

                              Kommentar

                              Lädt...
                              X