• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage PHP MySQL Sonderzeichen in DB speichern

Curved

Neues Mitglied
Hallo zusammen,

ich habe ein Formular, das als Mini-CMS dient erstellt. Die Einträge werden in einer DB gespeichert und auf einer anderen Seite ausgegeben. Jetzt habe ich das Problem, dass Sonderzeichen wie z.B. ' einen Fehler verursachen und der Eintrag des entsprechenden Feldes in der DB leer bleibt.

Hier die Verarbeitung:
PHP:
<?php
include 'config.inc.php';
$msg = ''; //  variable for errors & success info

/* BEITRAG ÄNDERN */
if ( isset( $_POST[ 'change' ] ) && is_numeric( $_POST[ 'n_ID' ] ) ) {
    $the_date = htmlspecialchars( $_POST[ 'datum' ] );
    $the_headline = htmlspecialchars( $_POST[ 'kopfzeile' ] );
    $the_text = htmlspecialchars( $_POST[ 'text' ] );

    if ( !$msg ) {
        $sql = 'UPDATE `news` SET
                datum = \'' . $the_date . '\',
                kopfzeile =  \'' . $the_headline . '\',
                text = \'' . $the_text . '\'
            WHERE
                n_ID = \'' . $_POST[ 'n_ID' ] . '\'';

        $run = $db->query( $sql );

        if ( $run ) {
            $msg .= '<strong>News wurden aktualisiert.</strong>';
        } else {
            $msg .= '<strong>Fehler beim Aktualisieren der News!</strong>';
        }

    }

}

/* NEUER BEITRAG */
if ( isset( $_POST[ 'new' ] ) ) {
    $the_date = htmlspecialchars( $_POST[ 'datum' ] );
    $the_headline = htmlspecialchars( $_POST[ 'kopfzeile' ] );
    $the_text = htmlspecialchars( $_POST[ 'text' ] );

    $sql = 'INSERT INTO news SET
            datum = \'' . $the_date . '\',
            kopfzeile =  \'' . $the_headline . '\',
            text = \'' . $the_text . '\'';

    if ( !$msg ) {
        $run = $db->query( $sql );

        if ( $run ) {
            $msg .= '<strong>Neue Mitteilung veröffentlicht.</strong>';
        } else {
            $msg .= '<strong>Fehler beim Veröffentlichen.</strong>';
        }
    }
}

?>

Mein Ansatz war, das "htmlspecialschars" durch "mysqli_real_escape_string" oder dergleichen zu ersetzen, doch auch das schafft keine Abhilfe. Die Datenbank an sich ist UTF-8 codiert, die textfelder haben die Kollation "utf8_unicode_ci" und sind vom Typ "text" bzw. "varchar" habe ich auch schon getestet.
Kenne mich leider noch nicht sehr mit PHP und MySQL aus und auch das durchforsten sämtlicher Foren und Manuals hat mich bisher nicht weiter gebracht. Ich hoffe jemand kann mir weiterhelfen, was ich korrigieren muss, damit Sonderzeichen korrekt in die Datenbank geschrieben werden (und dann wieder ausgegeben).

Vielen Dank für eure Hilfe!

curved
 
Werbung:
Danke, das hatte ich ja versucht, aber ohne Erfolg. Allerdings habe ich es mir jetzt noch einmal angeschaut und festgestellt, dass ich lediglich "htmlspecialchars" durch "mysqli_real_escape_string" ersetzt hatte. Die korrekte Syntax ist allerdings "mysqli_real_escape_string(connection,escapestring);". Die connection hatte ich vergessen.
Danke nochmals!
 
Werbung:
Zurück
Oben