2

我的 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

4 回答 4

6

从您给出的错误消息看来,您使用order的表名恰好是MySQL 保留字

尝试用反引号括起来。

于 2011-01-21T14:28:24.463 回答
2

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

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

于 2011-01-21T14:28:30.137 回答
2

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

于 2011-03-24T19:12:04.643 回答
0

看起来您缺少链接标识符?

字符串 mysql_real_escape_string ( 字符串 $unescaped_string [, 资源 $link_identifier ] )

于 2011-01-21T14:27:58.837 回答