带有 Where 子句 PHP 的 Parse Server 的 GET api

Posted

技术标签:

【中文标题】带有 Where 子句 PHP 的 Parse Server 的 GET api【英文标题】:GET api for Parse Server with Where clause PHP 【发布时间】:2019-02-02 17:51:13 【问题描述】:

我有以下代码使用 php 向 Parse 服务器的 REST API 发出 GET 语句:

$query = json_encode(
array(
    'where' => array( 'userid' => "8728792347239" )
));
echo $query;
$ch = curl_init('https://*hidden*.herokuapp.com/parse/classes/computers?'.$query);
curl_setopt(
$ch, 
CURLOPT_HTTPHEADER,
array(
    'X-Parse-Application-Id: *hidden*',
    'X-Parse-REST-API-Key: *hidden*',
    'Content-Type: application/json'
)
);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
print_r($response);

但是我收到以下错误:

"code":102,"error":"Invalid parameter for query: \"where\":\"userid\":\"8728792347239\""

我做错了什么?

【问题讨论】:

【参考方案1】:

在没有阅读文档的情况下,我敢打赌它应该是 url 编码的,而不是 json 编码的 - 或者 - 数据应该在 POST 正文中,而不是 URL 查询中。

如果猜测 #1 是正确的,那么您的问题是您使用的是 json_encode 而不是 http_build_query 例如

$query = http_build_query(
array(
    'where' => array( 'userid' => "8728792347239" )
));

如果猜测 #2 是正确的,那么您的问题是您将数据添加到 url 查询而不是将其添加到请求正文中,例如

$ch = curl_init('https://*hidden*.herokuapp.com/parse/classes/computers');
curl_setopt($ch,CURLOPT_POSTFIELDS,$query);

【讨论】:

以上是关于带有 Where 子句 PHP 的 Parse Server 的 GET api的主要内容,如果未能解决你的问题,请参考以下文章

PHP MySQL Where 子句

PHP MySQL Where 子句

使用更改的 WHERE 子句访问直通查询

带有 WHERE 子句的 UNION

带有获取下一行的 Where 子句

搜索带有单引号的 where 子句的记录