mysql_real_escape_string не работает - PullRequest
2 голосов
/ 21 января 2011

Моя 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 ]

6 голосов
/ 21 января 2011

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

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

2 голосов
/ 24 марта 2011

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

2 голосов
/ 21 января 2011

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

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

0 голосов
/ 21 января 2011

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

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

...