提交summernote表单时sql中的特殊字符错误

Posted

技术标签:

【中文标题】提交summernote表单时sql中的特殊字符错误【英文标题】:special characters error in sql when submitting summernote form 【发布时间】:2015-07-01 21:16:02 【问题描述】:

我正在尝试在我的表单中实现 Summernote 所见即所得编辑器,当我提交表单以写入 mssql 表时,它接受大多数特殊字符 ($%! etc) 甚至双引号很好,但是当我尝试使用单引号时,我得到一个 sql 错误。你能帮我解决我错过的问题吗?

第一行实现插件

 <textarea name="majorupdate" id="summernote" rows="10" class="form-control"></textarea>

在将其发布到使用以下值的第二个页面时(删除了一些不相关的条目以使其简单)

$majorupdateX = $_POST['majorupdate'];

$query = mssql_query("INSERT INTO PRJ_Update1 (update1) VALUES ('$majorupdateX') ");

从sql表中回调entry时,页面上显示是这样的

echo                '<p>'.$row[update1].'</p>'; 

我怀疑我需要以某种方式替换转义 html 等效项的特殊字符?不知道如何最好地做到这一点,作为新手,我曾希望 Summernote 文本编辑器能够解决这个问题。我尝试在 POST 值上使用 htmlspecialchars() 函数,但没有成功。可能是我没有正确使用它。

错误

Warning: mssql_query() [function.mssql-query]: message: Line 1: Incorrect syntax near 's'. (severity 15) in C:\WPServer\Web\dev\Rehan\ProjectTracker\PR_projectUpdates1_formpost.php on line 47

Warning: mssql_query() [function.mssql-query]: message: Unclosed quotation mark before the character string ') '. (severity 15) in C:\WPServer\Web\dev\Rehan\ProjectTracker\PR_projectUpdates1_formpost.php on line 47

【问题讨论】:

“当我尝试使用单引号时,我得到一个 sql 错误回来” - 是吗?分享。如果我们不知道错误是什么,我们将无能为力。 - 转义/清理您的数据 根据您的编辑,请参阅评论 #2 ;-) 咨询 ***.com/q/60174 或使用准备好的语句。 除了在安全性(SQL 注入)方面要好得多之外,使用准备好的语句无论如何都会转义所有数据。此外,我强烈建议您转到 Microsoft PHP Drivers for SQL Server:microsoft.com/en-gb/download/details.aspx?id=20098,因为这将允许参数化查询。然后在此处查看 BOL:php.net/manual/en/book.sqlsrv.php。 @Fred-ii- 你不能来这里!你是罗慕兰人! ;) 尝试使用这里建议的参数化查询; ***.com/questions/15840642/… 【参考方案1】:

使用这个

ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci;

ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

【讨论】:

谢谢。你能给我一些关于如何使用和它在做什么的更多信息吗?

以上是关于提交summernote表单时sql中的特殊字符错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在表单提交期间删除 URL 中的特殊字符

summernote富文本编辑器配合validate表单验证无法进行表单提交的问题

Summernote回调图片上传完成,但Form再次提交post请求文件

Summernote 将“文件”字段添加到 POST

避免mysql注入应该避免都有哪些特殊字符

图片上传到 Summernote 编辑器中的文件夹