我正在使用Zend_Gdata_SpreadsheetsListQuery。在PHP中我的查询是:
"confirmation=$confirmation"
问题是$confirmation = 'AB-CD-EFG-012345';
显然连字符会导致查询出现问题,抛出的异常是:
未捕获的异常'Zend_Gdata_App_HttpException',消息'预期响应代码200,得到400 解析错误:遇到无效的令牌“
如何引用或转义值以不导致解析错误?单引号会导致相同的错误。
编辑:当我使用双引号进行测试时,出现了用户错误。双引号有效。
答案 0 :(得分:2)
事实证明我有两个电子表格,一个用于开发,一个用于制作,我没有查询我认为的那个..这个解决方案有效:
"confirmation=\"$confirmation\""
答案 1 :(得分:2)
值得注意的是,你必须小心逃避。我试过这个并没有得到任何快乐。我尝试了很多这样的组合:
$query->setSpreadsheetQuery("name=\"Andrew John\"");
但无济于事。通过HTTP Inspector运行流量(并设置Zend HTTP Client以通过代理运行是另一件值得关注的事情!)我可以看到这个工作生成的URL看起来像这样:
http://spreadsheets.google.com:80/feeds/list/spreadsheetkey/od6/private/full?sq=name%3D%5C%22Andrew+John%5C%22
这导致无效令牌(状态400)错误。它不喜欢%5C%22(\“)转义序列,但是从哪里获取它?!
事实证明,在Zends代码中嵌入了一个“parse_str”,它在查询字符串中添加了斜杠,因为出于某种原因(Ubuntu默认php配置?),magic_quotes_gpc在php.ini文件中设置为On。
关闭此选项后,生成的网址可以恢复为:
http://spreadsheets.google.com:80/feeds/list/spreadsheetkey/od6/private/full?sq=name%3D%22Andrew+John%22
一切都开始了。
顺便说一句,我已经诉诸于通过HTTP Inspector运行它,因为这样做:
echo $query->getQueryUrl();
错误地报告它在每个引用之前发送了没有%5C的字符串!只是去展示,相信你的代码告诉你的东西永远都不值得......
因此,如果您在Zend框架的Gdata类中遇到结构化查询的问题而只是添加引号并不能解决它,请快速查看是否已将magic_quotes_gpc设置为On!
答案 2 :(得分:1)
我试图为此研究Zend库,但我没有快乐。
这可能就像在撇号中包装值一样简单吗?
您的代码:
"confirmation=$confirmation"
可能的测试代码:
"confirmation='$confirmation'"
随意的建议......
答案 3 :(得分:0)
您可以使用urlencode
。但是,我希望Zend API可以为您处理,所以请检查您是否正确使用它。
答案 4 :(得分:0)
我的解决方案:
获取与查询不完全匹配的行 - 由似乎没有禁止字母/符号的列。并在PHP脚本中对行进行过滤。