Maddes: Problem bei INSERT mit PHP ab bestimmter Datengröße

Hallo,
bin noch Anfänger in Sachen Datenbanken.

Erstelle gerade ein News-Skript mit PHP und einer MySql-Datenbank.
Funktioniert alles super bis auf einen Bug den ich eben festgestellt habe.
kurze Info: benutze ein Formular mit Textarea, das ganze per POST an ein Skript, welches den Eintrag in die Datenbank abspeichert.
Bei etwas längeren Texten klappt es nicht mehr (keine Fehlermeldung...der Eintrag wird einfach nicht in der Datenbank abgespeichert)
Habe in der Tabelle als Datentyp "text" und auch mal "longtext" probiert.
Wenn ich den längeren Text direkt per SQL-Befehl im php-my-admin eingebe, geht es ohne Probleme.

Danke schonmal für die Hilfe.

  1. schreib mal bitte ein beispieltext, der nicht funktioniert, und die mysql-abfrage, die den text dann in die datenbank schreibt

    1. Ich glaub ich habs: in dem Text waren Anführungszeichen. hab sie rausgelöscht, dann gings.
      Wie geht man mit den Anführungszeichen um? Bin grad überfordert.

      1. Hallo

        Ich glaub ich habs: in dem Text waren Anführungszeichen. hab sie rausgelöscht, dann gings.
        Wie geht man mit den Anführungszeichen um? Bin grad überfordert.

        Man maskiert sie. PHP stellt dazu die Funktion mysql_real_escape_string() zur Verfügung. Wende sie auf alle deine Eingaben in die Datenbank an. Bein Auslesen der DB kümmert sich dann MySQL um das demaskieren.

        Tschö, Auge

        --
        Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
        (Victor Hugo)
        Veranstaltungsdatenbank Vdb 0.1
        1. Hallo

          Ich glaub ich habs: in dem Text waren Anführungszeichen. hab sie rausgelöscht, dann gings.
          Wie geht man mit den Anführungszeichen um? Bin grad überfordert.

          Man maskiert sie. PHP stellt dazu die Funktion mysql_real_escape_string() zur Verfügung. Wende sie auf alle deine Eingaben in die Datenbank an. Bein Auslesen der DB kümmert sich dann MySQL um das demaskieren.

          Tschö, Auge

          irgendwie funktionierts nicht. hier ein auszug aus meinem Quellcode:

          <<

          $dbh = mysql_connect("$host:$port",$user,$pw);
          mysql_select_db($database,$dbh);

          mysql_real_escape_string($news);

          $query = "INSERT INTO News (date, titel, news VALUES ("$date", "$titel", "$news")";

          $sth = mysql_query($query, $dbh);

          mysql_close($dbh);

          1. Moin Maddes,

            irgendwie funktionierts nicht. hier ein auszug aus meinem Quellcode:

            <<

            $dbh = mysql_connect("$host:$port",$user,$pw);
            mysql_select_db($database,$dbh);

            mysql_real_escape_string($news);

            $query = "INSERT INTO News (date, titel, news VALUES ("$date", "$titel", "$news")";

            $sth = mysql_query($query, $dbh);

            mysql_close($dbh);

            du hast mysql_real_escape_string falsch "plaziert". Das Ergebnis der Funktion wird nirgends gespeichert.

            Schaue mal hier nach:
            http://www.php.net/manual/de/function.mysql-real-escape-string.php

            regds
            Mike©

            --
            Freunde kommen und gehen. Feinde sammeln sich an.
            1. So funktioniert, hab übersehen, dass die Funktion einen String zurückgibt. Danke für Eure Hilfe!
              ps: is der Datentyp text bzw. longtext so gängig bei längeren Strings oder nimmt man da was anderes?

              1. echo $begrüßung;

                ps: is der Datentyp text bzw. longtext so gängig bei längeren Strings oder nimmt man da was anderes?

                Man nimmt idealerweise immer einen, der den Anforderungen gerecht wird. Welche Stringtypen welche Größen annehmen können (und welchen Speicher sie dabei verbrauchen) findest du unter [http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html@title=Data Type Storage Requirements].

                echo "$verabschiedung $name";

  2. Hast du nachgeschaut, ob der Text _vor_ dem erstellen der sql-query überhaupt vorhanden ist?

    Also die Variable ($_POST[kawiedievariableheisst]) oder wie du den sonst übergibst in korrekter Form vorhanden ist?

    mfg
    Micha

    --
    viel Spass: ie:{ fl:) br:> va:( ls:[ fo:) rl:? n4:{ ss:{ de:> js:} ch:? sh:( mo:) zu:]