2 Stimmen

mysql_real_escape_string funktioniert nicht

Mein mysql_real_escape_string wird ignoriert. Es bringt mich um, weil ich das Gefühl habe, dass ich etwas Kleines übersehe.

Die Variable $htmlText stammt aus einem TinyMCE-Editor, in dem der Text als HTML gerendert wird, d.h. mit Tags usw.

<?php 
    /*--------GLOBAL PROCEDURES--------*/
    session_start();
    require "../scr/config-data.php.inc";
    mysql_connect($host,$username,$password) or die 
    ("Could Not Connect".mysql_error());
    mysql_select_db($db) or die ("Could Not Connect".mysql_error());

    /*-----SEVERAL SELECT/INSERT QUERIES, ALL WORKING FINE-----*/

    /*--------SPECIFIC PROCEDURES-------*/      
    if($_POST['submit']){
        //Check that POS has been chosen
        $htmlText = mysql_real_escape_string($_POST['cust']);
        if($htmlText != ""){
            mysql_query("INSERT INTO table VALUES(NULL, '$htmlText' )") or die(mysql_error());
        }else{
            $feedback = "Please Enter some text into the editor";
        }
    }

    /*--------CLOSING PROCEDURES-------*/
    mysql_close();

?>

Das Seltsame ist, dass es von einem Skript, das funktioniert, angepasst wurde und nur die Variablennamen geändert wurden. Ich erhalte einen Fehler in der MySQL-Syntax. Es ist auch nicht die HTML in den Text zu entkommen, so dass ich diesen Fehler erhalten:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order VALUES(NULL, '

sfgafgafs

')' at line 1

6voto

codaddict Punkte 426877

Aus der von Ihnen angegebenen Fehlermeldung geht hervor, dass Sie Folgendes verwenden order als Tabellenname, der zufällig ein MySQL reserviertes Wort .

Versuchen Sie, ihn in die hinteren Zecken einzuschließen.

2voto

Bastian Punkte 10269

Mysql_real_escape_string wird kein html entschlüsseln. Es escaped nur \x00 , \n , \r , \, ', " und \x1a.

Der Name Ihrer Tabelle sollte nicht "order" lauten, da dies ein spezielles SQL-Wort ist. Sie sollten sie umbenennen oder darauf achten, dass Sie sie in Backticks setzen.

2voto

Ich glaube auch, der Grund ist aufgrund des Tabellennamens "um", wie mysql nimmt es wie Sie versuchen, die Auftragsklausel in einer Insert-Abfrage verwenden, ändern Sie den Tabellennamen auf etwas anderes.

0voto

Drewdin Punkte 1692

Sieht so aus, als würde der Link Identifier fehlen?

string mysql_real_escape_string ( string $unescaped_string [, resource $link_identifier ] )

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X