PHP中实现带查询的curl -X POST命令及语法错误解决
解决PHP cURL语法错误并实现GraphQL POST请求
错误原因
你遇到的PHP Parse error: syntax error, unexpected identifier "curl_setopt"是因为第9行的$payload赋值语句末尾缺少分号,PHP要求每条语句必须以分号结尾,遗漏后会导致后续代码解析失败。
修正并优化后的代码
以下是修复语法错误,同时优化写法(避免手动转义引号、增加错误处理)的完整PHP脚本:
<?php // API URL $url = 'https://graphcdn.frankenergie.nl/'; // 创建cURL资源 $ch = curl_init($url); // 用HEREDOC语法编写GraphQL查询,提升可读性 $query = <<<QUERY query MarketPrices { marketPricesElectricity(startDate: "2023-01-12", endDate: "2023-01-15") { till from marketPrice priceIncludingMarkup } marketPricesGas(startDate: "2022-06-09", endDate: "2022-06-10") { from till marketPrice priceIncludingMarkup } } QUERY; // 自动生成JSON格式的请求体,避免手动转义引号出错 $payload = json_encode(['query' => $query]); // 设置POST请求参数 curl_setopt($ch, CURLOPT_POSTFIELDS, $payload); // 设置请求头 curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json', 'User-Agent: Integromat/production' ]); // 配置返回结果不直接输出,而是返回给变量 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 执行请求并获取结果 $result = curl_exec($ch); // 检查请求是否出现错误 if ($result === false) { echo 'cURL请求失败: ' . curl_error($ch); } else { // 将JSON结果转为数组并输出,方便查看 $response = json_decode($result, true); print_r($response); } // 关闭cURL资源 curl_close($ch); ?>
优化说明
- 使用HEREDOC语法编写GraphQL查询,无需手动转义字符串内的引号,代码更易读维护。
- 用
json_encode生成请求体,自动处理JSON格式的转义规则,避免手动拼接JSON时出现语法错误。 - 增加cURL错误检查,方便快速排查请求失败的原因。
内容的提问来源于stack exchange,提问作者Joost
相关产品推荐
相关产品推荐

