我使用PHP和MySQL作为主要语言,而TinyMCE则使用WYSIWYG功能。问题是我每次尝试在文本编辑器上放置一个撇号时都会收到MySQL错误。错误似乎是这样的:
执行查询时发生错误。 请通知Web开发人员此错误。
注意:SQL语法中有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 附近绝对适合你。
马尼拉国际语言学院('第1行
该声明引导我进入这组代码:
function ExecuteQuery($strquery){
$rs = mysql_query("$strquery") or
die('<br><br>An error occured upon executing query.<br>Please notify the web developer about this error.<br><br>NOTE: '.mysql_error());
return $rs;
}
但我似乎无法理解这个问题。这里需要一些帮助。非常感谢你。
答案 0 :(得分:3)
您看到错误,因为撇号在Mysql中具有特殊含义。正如伊恩所说,你必须在mysql_real_escape_string
$strquery
不使用转义将导致严重的SQL注入安全问题。 http://www.unixwiz.net/techtips/sql-injection.html
function ExecuteQuery( $strquery ) {
$rs = mysql_query(mysql_real_escape_string($strquery)) or
die('<br><br>An error occured upon executing query.<br>Please notify the web developer about this error.<br><br>NOTE: '.mysql_error());
return $rs;
}
答案 1 :(得分:1)
我想你的查询是这样的......
INSERT INTO table VALUES ('blah blah blah');
现在,想象当您尝试插入的文本包含单引号/撇号时会发生什么......
INSERT INTO table VALUES ('This won't work.');
查询参数内容中的任何单引号都会破坏您的代码。您需要在查询参数上使用mysql_real_escape_string
。
更好的是,将PDO或MySQLi与预先准备好的语句一起使用。
答案 2 :(得分:0)
您的查询如下所示:
INSERT INTO table (textfield) VALUES ( 'your editor value' );
现在,您可能无法转义输入值,因此文本中的撇号会破坏查询
INSERT INTO table (textfield) VALUES ( 'your ' editor value with apostrophe' );
Read this要了解逃生,还要仔细看看红框