Shopify GraphQL报Parse error on ":" (COLON)错误的PHP对接问题求解
错误原因
你收到的Parse error on ":" (COLON) at [2, 35]错误是因为Shopify GraphQL要求传入的商品变体ID为字符串类型,你的代码在拼接查询语句时没有给ID值加双引号,导致GraphQL解析器无法识别语法。同时直接拼接查询变量的写法存在GraphQL注入风险,不推荐使用。
修复方案
方案1:快速修复(仅适配当前写法)
给拼接的$variantId外层包裹双引号即可,修改业务代码中的query构造部分:
// 修改前 $query = array("query" => '{ productVariant(id: '. ($variantId) .') { availableForSale } }'); // 修改后 $query = array("query" => '{ productVariant(id: "'. $variantId .'") { availableForSale } }');
方案2:规范写法(推荐,安全无注入风险)
遵循GraphQL官方规范,将查询语句和变量分离传递:
$query = array( "query" => 'query getProductVariant($id: ID!) { productVariant(id: $id) { availableForSale } }', "variables" => [ "id" => $variantId ] );
额外优化建议
你的shopify_gql_call函数中存在一行多余的空请求头设置,可能会导致接口请求异常,建议删除该行:
// 删除下面这行多余的空请求头 $request_headers[] = "";
内容的提问来源于stack exchange,提问作者Stefan Momcilovic
相关产品推荐
相关产品推荐

