Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt]PHP Version 5.3.0 -> Textausgabe

Einklappen

Neue Werbung 2019

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

  • [Erledigt]PHP Version 5.3.0 -> Textausgabe

    Hallo,

    habe ein Problem mit einer Text Ausgabe aus meiner mySQL Datenbank.

    PHP-Code:
    <?php 
        $sqlhost    
    "localhost";
        
    $database    "xxx";
        
    $sqluser    "xxx";
        
    $sqlpass    "xxx";
        
        
    $db         = @new mysqli($sqlhost$sqluser$sqlpass$database);

        
    $result  $db -> prepare("SELECT gb_desc FROM guestbook WHERE gb_id = 13747");
        
    $result  -> bind_result($gb_desc);
        
    $result  -> execute();
        
    $result  -> fetch();
        
    $result  -> close();

        echo 
    nl2br($gb_desc);
    ?>
    Installiert ist die PHP Version 5.3.0 [phpinfo()], der Datenbank Typ für gb_desc ist 'Text'.

    Das Problem ist, dass aber nur 255 Zeichen bei der PHP Ausgabe angezeigt werden.
    In der Datenbank sind es aber 287!

    Muss ich da was in der php.ini anpassen?
    Bin für jede Hilfe dankbar.

    Gruss

  • #2
    Stichwort Byte Multibyte. Wenn du für VARCHAR 255 angibst, was erwartest du dann, dass darin gespeichert werden kann, 255 Byte, oder 255 Zeichen? Bei UTF-8 muss die Datenbank eigentlich 4*255 Bytes reservieren, die MySQL tut das soweit ich weiß auch. Und entsprechend viele Bytes kannst du auch in das Feld schreiben. ORACLE nimmt das byteweise. Sprich 254 ASCII-Zeichen und 1 Multibyte-Zeichen (Umlaut z.B.) und dein Umlaut wird zerschnitten.

    Edit: Wenn du TEXT benutzt, sollte es keine Probleme mit 255 geben, erlaubt sind glaube ich 65k Zeichen. Da sollte dein Fehler am PHP-Code und der Validierung liegen. Vergleiche mal strlen($gb_desc) mit mb_strlen($gb_desc).
    "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

    Kommentar


    • #3
      Zitat von Chriz Beitrag anzeigen
      Da sollte dein Fehler am PHP-Code und der Validierung liegen.
      Mehr als eine reine nackte Ausgabe kann man doch nicht machen oder?

      Zitat von Chriz Beitrag anzeigen
      Vergleiche mal strlen($gb_desc) mit mb_strlen($gb_desc).
      Bei beiden kommt das Ergebnis 256 !?

      Kommentar


      • #4
        Und mb_strlen($string,'utf-8'); ?
        Crashkurs zum Thema Rechtschreibung: [COLOR="Green"]normalerweise[/COLOR] ([COLOR="Red"]normaler weise[/COLOR] oder [COLOR="Red"]normaler weiße[/COLOR]), [COLOR="DarkGreen"]Standard[/COLOR] ([COLOR="Red"]Standart[/COLOR]), [COLOR="DarkGreen"]eben[/COLOR] ([COLOR="Red"]ebend[/COLOR])

        Kommentar


        • #5
          Zitat von Asterixus Beitrag anzeigen
          Und mb_strlen($string,'utf-8'); ?
          Auch 256

          Kommentar


          • #6
            In der Datenbank sind es aber 287!
            Wie hast du diese Zahl ermittelt?
            [PHP]if ($var != 0) {
            $var = 0;
            }[/PHP]

            Kommentar


            • #7
              Indem ich den Text aus der Datenbank raus kopiert habe und in einen Texteditor rein kopiert habe.
              Dort werden mir 287 Zeichen angezeigt.

              Kommentar


              • #8
                Textbeispiel? Welcher Teil fehlt?
                "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

                Kommentar


                • #9
                  Ich hab herausgefunden woran es liegt
                  Ist ein php 5.3.0 bug -> PHP :: Bug #50021 :: Predefined Statements doesn't allow Strings with more than 256 letters.

                  Kommentar


                  • #10
                    dann könntest du immernoch PDO als Alternative nutzen …

                    Kommentar

                    Lädt...
                    X