2

私のmysql_real_escape_stringは無視されています。それは私を殺している、なぜならそれは私が欠けている小さな何かのように感じるからだ。

$ htmlText変数は、テキストがHTMLとして、つまりタグなどでレンダリングされるTinyMCEエディターから取得されます。

<?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();

?>

奇妙なことに、変数名を変更するだけで機能するスクリプトから適応されています。MySQL構文でエラーが発生します。また、テキスト内のHTMLをエスケープしていないため、次のエラーが発生します。

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
4

4 に答える 4

6

orderあなたが与えたエラーメッセージから、あなたはたまたまMySQLの予約語であるテーブル名として使用しているように見えます。

バックティックで囲んでみてください。

于 2011-01-21T14:28:24.463 に答える
2

mysql_real_escape_stringはhtmlをエスケープしません。\ x00、\ n、\ r、\、'、"、および\x1aのみをエスケープします。

テーブルの名前はSQLの特殊な単語であるため、「order」であってはなりません。名前を変更するか、必ずバッククォートに入れてください。

于 2011-01-21T14:28:30.137 に答える
2

私もその理由はテーブル名が「order」であるためだと思います。mysqlは挿入クエリでorder句を使用しようとしているようにそれを受け取り、テーブル名を別のものに変更します。

于 2011-03-24T19:12:04.643 に答える
0

リンク識別子がないように見えますか?

string mysql_real_escape_string(string $ unscaped_string [、resource $ link_identifier])

于 2011-01-21T14:27:58.837 に答える