向SQL Server查询添加反引号(MySQL规范)导致错误

时间:2017-04-13 作者:Peter PitLock

我们使用Wordpress作为内部Wiki。

我们正在使用SQL Server。我知道Wordpress是面向MySQL的。

如果文章中有反斜杠,则不会发布文章。它只会将文章保存为“自动草稿”,但它会清除你的提交页面,你的所有工作都会完成。

可以使用正斜杠,但输入反斜杠时,所有内容都将丢失。

我知道它不是(Frontier)插件——它发生在admin的正常帖子上——它不使用任何插件。

我使用了SQL Server Profiler。当有反斜杠时,SQL参数会错误地用

`

(重音符/反勾号)字符。这就是导致问题的原因。enter image description here

我还发现:在第一列有正斜杠之后,SQL语句中其后的所有列都错误地得到了反勾号

我怎样才能摆脱背勾呢?

我已经为PHP\\U SQL\\U Server安装了更新的驱动程序:4.0。

我用php更新了驱动程序。ini:扩展名=php\\u pdo\\u sqlsrv。dllextension=php\\u sqlsrv。动态链接库

和wp配置。php/**数据库类型。默认为mysql*/define(\'DB\\u TYPE\',\'pdo\\u sqlsrv\');

但在这些更新之后,该网站根本无法运行。

WordPress database error 42000 : [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Incorrect syntax near \'`\'. for query UPDATE wp_posts SET post_author = yyy, post_date =  N\'2017-04-16 16:52:44.000\', post_date_gmt =  N\'2017-04-16 14:52:44.000\', post_content =  N\'\\\\ \\\', `post_content_filtered` =  N\'\', `post_title` =  N\'test \\\\\', `post_excerpt` =  N\'\', `post_status` =  N\'draft\', `post_type` =  N\'post\', `comment_status` =  N\'closed\', `ping_status` =  N\'open\', `post_password` =  N\'\', WHERE ID = xxx made by edit_post, wp_update_post, wp_insert_post, pdo_wpdb->query, pdo_wpdb->_post_query, pdo_wpdb->print_error

1 个回复
SO网友:Niels van Renselaar

我无法在WordPress的干净安装上模拟这一点。因此,服务器端可能会发生一些额外的XSS/注入预防过滤。你应该先看看这个。

enter image description here

相关推荐

如何将WordPress配置为与Microsoft SQL Server数据库对话?

我们正在我们的intranet站点上构建WordPress站点,并希望将其连接到Microsoft SQL Server。我已经在IIS上下载并配置了PHP和PHP管理器。我还从键入此线程标题时弹出的已回答问题列表中下载了SQL Server DLL。我按照指示在PHP文件夹中下载了这些DLL。当我启动服务器地址以安装WordPress时,系统会提示我提供SQL DB名称、用户名、密码和DB主机名。我还下载了wp-db抽象插件,将wp-db抽象化。php文件放入WordPress文件保存的文件夹中,按照我