Insert INTO mit Sonderzeichen

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

  • Insert INTO mit Sonderzeichen

    Hallöchen.. hab ein kleines Problem...

    Und zwar hab ich den Befehl:
    PHP-Code:
     $sql "INSERT INTO $forume ( von, thread, ip, browser, zeit, beitrag) VALUES ( '$nickname', '$thema', '$ip', '$browser', '$datum', '$beitrag')"
    Gelegentlich kommt es vor, dass Forume auch Sonderzeichen enthält! Bei meinem Beispiel momentan das Sonderzeichen '

    Wenn ich:

    PHP-Code:
    $forume eregi_replace '\'' '\''$forume );
         
    $sql "INSERT INTO $forume ( von, thread, ip, browser, zeit, beitrag) VALUES ( '$nickname', '$thema', '$ip', '$browser', '$datum', '$beitrag')";
       
    mysql_query$sql$db ) or die ( mysql_error() ); 
    natürlich bei $forume mit bei dem ersten sonderzeichen '' dieses sonderzeichen \

    mache kommt die Fehlermeldung:

    You have an error in your SQL syntax near ''s going on?! ( von, thread, ip, browser, zeit, beitrag) VALUES ( 'Manu', 'f', '' at line 1

    Wenn ich:

    PHP-Code:
    $sql "INSERT INTO ".'´'.$forume.'´'." ( von, thread, ip, browser, zeit, beitrag) VALUES ( '$nickname', '$thema', '$ip', '$browser', '$datum', '$beitrag')";
       
    mysql_query$sql$db ) or die ( mysql_error() ); 
    mache kommt die Fehlermeldung:
    You have an error in your SQL syntax near '´Forum_What's going on?!´ ( von, thread, ip, browser, zeit, beitrag) VALUES ( 'M' at line 1

    Weiß nicht mehr weiter... kann mir jemand helfen?
    Zuletzt geändert von xManUx; 05.03.2004, 03:30.

    Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
    sondern mit den Augen das Manual zu lesen.

  • #2
    http://www.php.net/mysql-esacpe-string könnte dein freund werden
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      und wie soll das ganze aussehen!? ich mein.. irgendwie gibts da null beispiele im web


      $varnew = mysql_esacpe_string ( $varold, '\'' ); ?


      könntest Du mir das Beispielintensiver erklären?!

      falls nicht müsste ich zu ner alternative übergehen.. aber das würde ich gern vermeiden..

      danke schon mal im voraus !

      gruß,

      manu

      Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
      sondern mit den Augen das Manual zu lesen.

      Kommentar


      • #4
        hmm?

        bist du dem link von mrhappiness gefolgt?
        PHP-Code:
        <?php
        $item 
        "Zak's Laptop";
        $escaped_item mysql_escape_string($item);
        printf("Escaped string: %s\n"$escaped_item);
        ?>
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          Original geschrieben von derHund
          hmm?

          bist du dem link von mrhappiness gefolgt?
          PHP-Code:
          <?php
          $item 
          "Zak's Laptop";
          $escaped_item mysql_escape_string($item);
          printf("Escaped string: %s\n"$escaped_item);
          ?>
          Funktioniert immer noch net :\

          PHP-Code:
          ## welches Forum?

          $frage mysql_query "SELECT forum FROM foren where id='$foren_id'" );
           while ( 
          $userdaten mysql_fetch_array $frage ) )
           {  
          $forumA $userdaten["forum"]; }

          $item $forumA;
          $escaped_item mysql_escape_string($item);

          $forume $escaped_item;

          $sql "INSERT INTO Forumthreads ( thread, ip, browser, zeit, threaderoffen, forum) VALUES ( '$thema', '$ip', '$browser', '$datum', '$nickname', '$forume')";
             
          mysql_query$sql$db ) or die ( mysql_error() );


          ## Einfügen! ##
               
          $sql "INSERT INTO $forume ( von, thread, ip, browser, zeit, beitrag) VALUES ( '$nickname', '$thema', '$ip', '$browser', '$datum', '$beitrag')";
             
          mysql_query$sql$db ) or die ( mysql_error() ); 
          In das INSERT INTO in Forumthreads kommts durch aber in der zweiten nicht..

          Fehlermeldungweiterhin:

          You have an error in your SQL syntax near '\'s going on?! ( von, thread, ip, browser, zeit, beitrag) VALUES ( '', 'asdf', '' at line 1


          Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
          sondern mit den Augen das Manual zu lesen.

          Kommentar


          • #6
            PS: könnte sprintf() abhelfen?

            Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
            sondern mit den Augen das Manual zu lesen.

            Kommentar


            • #7
              Original geschrieben von xManUx
              PHP-Code:
               {  $forumA $userdaten["forum"]; }

              $item $forumA;
              $escaped_item mysql_escape_string($item);

              $forume $escaped_item
              dass sich bei dieser variablen-hin-und-herschubserei jeder programmierer nur an den kopf packen kann, ist dir bewusst ...?

              warum nicht gleich
              $forume = mysql_escape_string($forumA); ?


              PHP-Code:
              ## Einfügen! ##
                   
              $sql "INSERT INTO $forume ( von, thread, ip, browser, zeit, beitrag) VALUES ( '$nickname', '$thema', '$ip', '$browser', '$datum', '$beitrag')";
                 
              mysql_query$sql$db ) or die ( mysql_error() ); 

              In das INSERT INTO in Forumthreads kommts durch aber in der zweiten nicht..

              Fehlermeldungweiterhin:

              You have an error in your SQL syntax near '\'s going on?! ( von, thread, ip, browser, zeit, beitrag) VALUES ( '', 'asdf', '' at line 1
              in $forume steht bei dir also irgendwas in der art
              (what)'s going on?!
              drin - und das willst du bei diesem insert als den namen der tabelle, in die du einfügen willst, verwenden!?! ist ganz bestimmt nicht dein ernst ...


              mach dir bitte mal klar, was bei dir in welcher variablen drinsteht!
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                in $forume steht bei dir also irgendwas in der art
                (what)'s going on?!
                ja


                drin - und das willst du bei diesem insert als den namen der tabelle, in die du einfügen willst, verwenden!?! ist ganz bestimmt nicht dein ernst ...
                why?


                mach dir bitte mal klar, was bei dir in welcher variablen drinsteht!
                wie ist das gemeint!? die tabelle "What's going on?!" existiert als Forum und ist auch in der MySQL-Datenbank so vorhanden...

                Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
                sondern mit den Augen das Manual zu lesen.

                Kommentar


                • #9
                  Original geschrieben von xManUx
                  die tabelle "What's going on?!" existiert als Forum und ist auch in der MySQL-Datenbank so vorhanden...
                  wer wählt denn solche tabellennamen?

                  sorry, aber das find' ich reichlich ... meschugge.

                  für'n tabellennamen nimmt man ein wort, ggf. auch zwei, mit einem _ verbunden - aber doch keine phrasen dieser art ...

                  bin mir auch nicht sicher, ob das mit http://www.mysql.com/doc/de/Legal_names.html konform geht.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    die tabelle "What's going on?!" existiert als Forum und ist auch in der MySQL-Datenbank so vorhanden...
                    Ich dachte noch vor 6 Jahren Leerzeichen in Dateinamen seien unsinnig. Waren auf meinem Samba-Server früher ein Problem.

                    Offe

                    Kommentar


                    • #11
                      Original geschrieben von wahsaga
                      wer wählt denn solche tabellennamen?

                      sorry, aber das find' ich reichlich ... meschugge.

                      für'n tabellennamen nimmt man ein wort, ggf. auch zwei, mit einem _ verbunden - aber doch keine phrasen dieser art ...

                      bin mir auch nicht sicher, ob das mit http://www.mysql.com/doc/de/Legal_names.html konform geht.
                      werde ne alternative suchen... aber trotzdem danke !! mhh hätte da noch ne frage.. ( will ja net schon wieder einen neuen thread aufmachen )

                      und zwar hab ich in meinem forum das mit den bbcode etc..

                      PHP-Code:
                      $beitrag preg_replace('=\[ b \ ] (.*)\[ / b \ ]=Uis','<span style="font-weight:bold;">\1</span>'$beitrag);
                      $beitrag preg_replace('=\[ i \ ](.*)\[ / i \ ]=Uis','<span style="font-style:italic;">\1</span>',$beitrag); 
                      usw.. wie würde das mit dem quoten aussehen? bekomme das einfach nicht gebacken.. hab auch schon nach etlichen beispielen gesucht aber nix gefunden

                      wie ich das mim quoten bisher hab:

                      PHP-Code:

                             $beitrag 
                      eregi_replace ' \ [ quote \ ]''<table width=100%><tr bgcolor=#FEE9CB><td>[schwarz]<font size=1><i>Quote:</i><font size=2><br><hr />'$beitrag );
                             
                      $beitrag eregi_replace '\[/quote\]''<hr /></td></tr></table>[schwarz]'$beitrag ); 
                      wie würde man das richtig anstellen?!

                      grüßle,
                      manu

                      Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
                      sondern mit den Augen das Manual zu lesen.

                      Kommentar


                      • #12
                        warum machst du das nicht analog wie oben bei [ b ] und co. - wo ist deiner meinung nach der unterscheid zu [ quote ]?

                        $beitrag = preg_replace('=\[ quote \ ](.*)\[ / quote \ ]=Uis','<table width=100%><tr bgcolor=#FEE9CB><td><font size=1><i>Quote:</i><font size=2><br><hr />\1<hr /></td></tr></table>', $beitrag);


                        btw: die font-tags natürlich auch wieder schliessen, wenn du sie aufmachst (oder kamen die durch's forum?) - bzw. besser gar nicht verwenden, und stattdessen CSS für solche formatierungen anwenden.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          genauso wie bei [ B] [ /B]:
                          Code:
                          $start = '<table width=100%><tr bgcolor=#FEE9CB><td>[schwarz]<font size=1><i>Quote:</i><font size=2><br><hr />';
                          $ende = '<hr /></td></tr></table>[schwarz]';
                          echo preg_replace('!\[quote\](.*)\[\/quote\]!Uis', $start.'\\1'.$ende, $beitrag );
                          tipp: von ereg(i)_replace() solltest du besser die finger lassen,
                          ausserdem wäre bei einer "einzelersetzung" str_replace() besser,
                          weil schneller als die regulären
                          Kissolino.com

                          Kommentar


                          • #14
                            Original geschrieben von wahsaga
                            warum machst du das nicht analog wie oben bei [ b ] und co. - wo ist deiner meinung nach der unterscheid zu [ quote ]?

                            $beitrag = preg_replace('=\[ quote \ ](.*)\[ / quote \ ]=Uis','<table width=100%><tr bgcolor=#FEE9CB><td><font size=1><i>Quote:</i><font size=2><br><hr />\1<hr /></td></tr></table>', $beitrag);


                            btw: die font-tags natürlich auch wieder schliessen, wenn du sie aufmachst (oder kamen die durch's forum?) - bzw. besser gar nicht verwenden, und stattdessen CSS für solche formatierungen anwenden.
                            ich wusste nicht, dass man das via \1 trennen kann... aber danke!

                            hmm meinst du dass man quasi <style>blablahblah</style>

                            <table class='blah'> benutzt?

                            Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
                            sondern mit den Augen das Manual zu lesen.

                            Kommentar


                            • #15
                              Original geschrieben von Wurzel
                              genauso wie bei [ B] [ /B]:
                              Code:
                              $start = '<table width=100%><tr bgcolor=#FEE9CB><td>[schwarz]<font size=1><i>Quote:</i><font size=2><br><hr />';
                              $ende = '<hr /></td></tr></table>[schwarz]';
                              echo preg_replace('!\[quote\](.*)\[\/quote\]!Uis', $start.'\\1'.$ende, $beitrag );
                              tipp: von ereg(i)_replace() solltest du besser die finger lassen,
                              ausserdem wäre bei einer "einzelersetzung" str_replace() besser,
                              weil schneller als die regulären
                              gut zu wissen hab ich gar net gewusst! steht au irgendwo warum das so ist?

                              Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
                              sondern mit den Augen das Manual zu lesen.

                              Kommentar

                              Lädt...
                              X