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 ответа

Решение

Судя по сообщению об ошибке, похоже, что вы используете order как имя таблицы, которая оказывается зарезервированным словом MySQL.

Попробуйте заключить его в спину.

mysql_real_escape_string не будет избегать любого html. Это только избегает \x00, \n, \r, \, ', "и \x1a.

Имя вашей таблицы не должно быть "заказ", потому что это специальное слово SQL. Вы должны переименовать это или удостовериться, что Вы помещаете это в галочки.

Я также полагаю, что причина кроется в том, что имя таблицы 'order', поскольку mysql воспринимает это так, как будто вы пытаетесь использовать предложение order в запросе вставки, измените имя таблицы на что-то другое.

Похоже, вы пропустили идентификатор ссылки?

строка mysql_real_escape_string (строка $unescaped_string [, ресурс $link_identifier ])

Другие вопросы по тегам