Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在谷歌应用程序脚本中转换为空格的加号+;MySQL_Javascript_Mysql - Fatal编程技术网

Javascript 在谷歌应用程序脚本中转换为空格的加号+;MySQL

Javascript 在谷歌应用程序脚本中转换为空格的加号+;MySQL,javascript,mysql,Javascript,Mysql,我使用Google Apps作为web应用程序的REST API,但发现每当我尝试插入新记录时,该API不会保留加号。由于浏览器上的同源策略,JSON必须作为URL上的参数传递给API。该过程首先对JSON进行strigified,然后使用JavaScript中的escape函数对值进行转义 但是,一旦请求到达Google Apps,在到达doGet()之前解析请求对象的Google进程会将未转义的“+”视为一个空格 这是一个非常令人恼火的bug,所以如果其他人遇到它,我希望我的修复经验能有所帮

我使用Google Apps作为web应用程序的REST API,但发现每当我尝试插入新记录时,该API不会保留加号。由于浏览器上的同源策略,JSON必须作为URL上的参数传递给API。该过程首先对JSON进行strigified,然后使用JavaScript中的escape函数对值进行转义

但是,一旦请求到达Google Apps,在到达doGet()之前解析请求对象的Google进程会将未转义的“+”视为一个空格

这是一个非常令人恼火的bug,所以如果其他人遇到它,我希望我的修复经验能有所帮助。只要使用encodeURIComponent()而不是escape(),就可以了。

它们都没有

使用事先准备好的陈述。它们消除了对作为参数传递的内容的任何担忧。这就是它们存在的原因。

它们都没有

使用事先准备好的陈述。它们消除了对作为参数传递的内容的任何担忧。这就是它们存在的原因。

它们都没有

使用事先准备好的陈述。它们消除了对作为参数传递的内容的任何担忧。这就是它们存在的原因。

它们都没有

使用事先准备好的陈述。它们消除了对作为参数传递的内容的任何担忧。这就是它们存在的原因。

真是一个骗人的把戏

事情就是这样。我有一个URL,其中包含对API的请求,请求它插入一个包含加号的值的记录。在客户端,我使用了转义函数来实现这一点,但是转义函数没有对加号进行编码。然而,当请求通过服务器端发出时,显然,谷歌应用程序后端的任何解析URL参数的组件都会将加号视为空格。这很难确定,因为在谷歌应用程序脚本本身中,使用unescape成功地解码了参数,从而使问题似乎出在MySQL上

解决方案是什么?我改用encodeURIComponent而不是escape,现在它可以工作了

真是个骗人的把戏

事情就是这样。我有一个URL,其中包含对API的请求,请求它插入一个包含加号的值的记录。在客户端,我使用了转义函数来实现这一点,但是转义函数没有对加号进行编码。然而,当请求通过服务器端发出时,显然,谷歌应用程序后端的任何解析URL参数的组件都会将加号视为空格。这很难确定,因为在谷歌应用程序脚本本身中,使用unescape成功地解码了参数,从而使问题似乎出在MySQL上

解决方案是什么?我改用encodeURIComponent而不是escape,现在它可以工作了

真是个骗人的把戏

事情就是这样。我有一个URL,其中包含对API的请求,请求它插入一个包含加号的值的记录。在客户端,我使用了转义函数来实现这一点,但是转义函数没有对加号进行编码。然而,当请求通过服务器端发出时,显然,谷歌应用程序后端的任何解析URL参数的组件都会将加号视为空格。这很难确定,因为在谷歌应用程序脚本本身中,使用unescape成功地解码了参数,从而使问题似乎出在MySQL上

解决方案是什么?我改用encodeURIComponent而不是escape,现在它可以工作了

真是个骗人的把戏

事情就是这样。我有一个URL,其中包含对API的请求,请求它插入一个包含加号的值的记录。在客户端,我使用了转义函数来实现这一点,但是转义函数没有对加号进行编码。然而,当请求通过服务器端发出时,显然,谷歌应用程序后端的任何解析URL参数的组件都会将加号视为空格。这很难确定,因为在谷歌应用程序脚本本身中,使用unescape成功地解码了参数,从而使问题似乎出在MySQL上



解决方案是什么?我改用encodeURIComponent而不是escape,现在它可以工作了

研究准备好的陈述。不需要转义。@David我已经转义过了,但无论如何也不能避免转义某些字符,因为语句可能包含需要转义的字符串。另外,使用准备好的语句会给我的sql builder增加很多复杂性。我宁愿用JavaScript处理转义,但我需要知道所有需要转义的字符。显然,甲骨文公司的某位员工无意中编写了足够全面的文档,因为文档中并没有将文字加号列为要逃避的字符。我不想再有这样的惊喜了。“文档中没有将文字加号列为要转义的字符”——这是因为惊喜
+
在任何类型的SQL中都不是特别的,尤其是在mysql方言中。对于您的任务,您不需要处理所列举的转义序列的至少一半。”上表没有提到需要转义的“+”加号,但如果不是,那么它将转换为一个空格“--它没有。如果是的话-它是由其他东西转换的,而不是由mysql。你是说你在写一个与mysql对话的低级适配器。。。?!我怀疑这一点。到底是什么连接到了数据库?以某种形式,您应该在某个时候涉及MySQL客户机库,其中包含所有必要的转义函数。不需要逃避。@David我已经逃避了,但无法避免必须逃避某些角色