我的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
答案 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])