You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server含空格承运商名称查询无结果及HTTP400问题求助

解决方案:承运商名称含空格时SQL查询无结果+HTTP 400错误

1. 先解决HTTP 400请求错误

你遇到的HTTP/1.1 400 Bad Request是因为URL参数里的空格未做URL编码,直接拼接带空格的字符串会被服务器判定为非法请求。

修复方法:用PHP的urlencode()函数对承运商名称参数编码后再拼入URL:

$transpName = 'LE CALVEZ'; // 示例承运商名称
$encodedName = urlencode($transpName);
$url = "http://xxxxxxxxx:xxxx/index.php?page=ListeMouvementsTransporteurAPI&transp={$encodedName}";
// 之后再用file_get_contents或curl请求编码后的URL

编码后空格会被转为%20,服务器就能正确解析参数。

2. 修复SQL Server查询匹配问题

错误根源

之前尝试的[]、MySQL风格的`都是无效操作——SQL Server用[]包裹字段名,但你是匹配字段值,不需要这些符号;而LIKE %xxx%是模糊匹配逻辑,和你需要的精确匹配需求不符。

正确的PDO预处理写法

用PDO参数绑定确保查询安全且准确,同时处理可能的前后空格问题:

// 假设已初始化PDO连接$pdo
$transp = $_GET['transp'];
// 可选:如果数据库中名称存在前后空格,先清理参数
$transp = trim($transp);

// 编写预处理语句,用DATEADD筛选过去7天的记录
$stmt = $pdo->prepare("
    SELECT * 
    FROM 你的运输记录表名
    WHERE nomTransporteur = :transp 
      AND 运输日期字段 >= DATEADD(day, -7, GETDATE())
");
// 绑定参数并指定字符串类型
$stmt->bindParam(':transp', $transp, PDO::PARAM_STR);
$stmt->execute();

// 获取查询结果
$records = $stmt->fetchAll(PDO::FETCH_ASSOC);

额外检查点

  • 确认数据库中nomTransporteur字段的值是否含隐藏空格(如全角空格、制表符),可执行SELECT LEN(nomTransporteur) FROM 表名 WHERE nomTransporteur LIKE '%LE CALVEZ%'对比参数长度。
  • 若需忽略空格差异匹配,可使用REPLACE(nomTransporteur, ' ', '') = REPLACE(:transp, ' ', ''),但此写法会导致索引失效,数据量大时不建议使用。

内容的提问来源于stack exchange,提问作者Fabien Gréaux

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 16:23:24