如何在PHP的cURL中为FXHash GraphQL API设置变量
整合GraphQL排序参数到PHP cURL请求的解决方案
完整修改后的代码
$url = 'https://api.fxhash.xyz/graphql'; $curl = curl_init(); // 带变量的GraphQL查询 $queryData = 'query Listings($sort: ListingsSortInput) { listings(sort: $sort) { amount createdAt price issuer { name } objkt { name } } }'; // 定义排序参数(用PHP数组更易维护) $variables = [ 'sort' => [ 'createdAt' => 'DESC' ] ]; // 组装GraphQL请求核心数据 $data = [ "query" => $queryData, "variables" => $variables ]; curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POST, TRUE); curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_HEADER, FALSE); curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($curl, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json' ]); // 执行请求并处理结果 $response = curl_exec($curl); if(curl_errno($curl)){ echo 'CURL错误:' . curl_error($curl); } curl_close($curl); $result = json_decode($response, true); print_r($result);
关键修改说明
- 替换查询语句:将原无参数的
listings查询替换为带$sort变量的查询,同时修正字段名createdat为API要求的createdAt,避免字段匹配失败。 - 添加变量参数:GraphQL POST请求需同时传递
query和variables字段,这里用PHP数组定义排序参数,再通过json_encode()转换为JSON格式,比手动拼接JSON字符串更安全。 - 简化代码结构:移除了原代码中冗余的数组初始化语句,让逻辑更清晰。
可选:使用原$options变量的方式
如果坚持使用你定义的$options JSON字符串,可将$variables替换为:
$options = '{ "sort": { "createdAt": "DESC" } }'; $variables = json_decode($options, true);
内容的提问来源于stack exchange,提问作者cpcdev
相关产品推荐
相关产品推荐

