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

Laravel查询传入#返回错误结果,如何规避该异常?

问题原因

你的code字段应为数字类型(如int),当传入非数字字符串#时,MySQL会自动执行隐式类型转换,将#转换为数字0,因此查询会匹配code=0的第一条记录。

解决方法

根据业务场景,可选择以下两种方案:

方案1:提前验证输入合法性

如果code仅接受数字类型的值,先校验输入是否为有效数字,非法输入直接返回空:

public function getConditionDescription($search){
    // 仅允许数字/数字字符串输入,可根据code字段类型调整验证逻辑
    if (!is_numeric($search)) {
        return "";
    }
    $condition = Condition::where("code", $search)->first();
    return $condition?->condition_description ?? "";
}

方案2:强制严格类型比较

如果code是字符串类型(如varchar),需避免MySQL的隐式转换,使用BINARY关键字强制二进制严格匹配:

public function getConditionDescription($search){
    $condition = Condition::whereRaw('BINARY code = ?', [$search])->first();
    return $condition?->condition_description ?? "";
}

注:方案2仅适用于code为字符串类型的场景,若code是数字类型,优先使用方案1更合理。

内容的提问来源于stack exchange,提问作者Mike

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:31:05