mysql_real_escape_string无效

时间:2011-01-21 14:23:10

标签: php mysql mysql-real-escape-string

我的mysql_real_escape_string被忽略了。这让我很难过,因为我觉得这是一件我想念的小事。

$ htmlText变量来自TinyMCE编辑器,其中文本呈现为HTML,即带有标签等。

<?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 个答案:

答案 0 :(得分:6)

根据您提供的错误消息,您似乎使用order作为表名,恰好是MySQL reserved word

请尝试将其封在后面。

答案 1 :(得分:2)

mysql_real_escape_string不会转义任何html。它只会转义\ x00,\ n,\ r,\,',“和\ x1a。

您的表名不应该是“order”,因为它是一个SQL特殊字。你应该重命名它或确保你把它放在反引号中。

答案 2 :(得分:2)

我也相信原因是由于表名为'order',因为mysql认为你试图在插入查询中使用order子句,将表名更改为其他名称。

答案 3 :(得分:0)

看起来你错过了链接标识符?

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