撇号错误

时间:2013-01-01 11:54:29

标签: php mysql

我使用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;
}

但我似乎无法理解这个问题。这里需要一些帮助。非常感谢你。

3 个答案:

答案 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要了解逃生,还要仔细看看红框