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

Laravel(PHP)General error:1366 整数值不正确问题求助

问题排查与解决方案

嘿,我一眼就看出问题出在哪了——你获取idUtlstr的方式不对,导致插入的不是整数而是集合的JSON字符串,这才触发了General error: 1366错误。

错误原因分析

你用get()方法查询idUtlstr,但get()返回的是Laravel集合对象,哪怕结果只有一条记录,它也是包含单个元素的集合。当你直接把这个集合赋值给idClient时,Laravel会自动把它转成JSON字符串(也就是报错信息里的[{"idUtlstr":25}]),但你的idClient字段是整数类型,数据库自然无法接受这种非整数值,所以抛出了"整数值不正确"的错误。

修正方案

这里提供两种简洁的解决方式,同时建议增加异常判断避免后续问题:

方案1:用value()直接获取单个字段值(最简洁)

value()方法会直接返回匹配到的第一条记录的指定字段值,没有找到则返回null:

$id = DB::table('utilisateur')
    ->where('email', $request->input("email"))
    ->value('idUtlstr');

// 先判断是否获取到有效ID,再执行插入
if ($id) {
    DB::table('client')->insert([
        'idClient' => $id,
        'nbrSignl' => 0,
        'numPermis' => 0,
        'quest1' => 'vide',
        'quest2' => 'vide',
        'quest3'=> 'vide',
        'datePermis' => '2000-01-01',
        'numCompte' => 0 ,
        'blocage' => 'non'
    ]);
} else {
    // 处理邮箱对应的用户不存在的情况,比如返回错误响应
}

方案2:用first()获取单条记录对象后取值

如果需要用到用户的其他字段,这种方式更灵活:

$utilisateur = DB::table('utilisateur')
    ->where('email', $request->input("email"))
    ->first();

if ($utilisateur) {
    DB::table('client')->insert([
        'idClient' => $utilisateur->idUtlstr,
        'nbrSignl' => 0,
        'numPermis' => 0,
        'quest1' => 'vide',
        'quest2' => 'vide',
        'quest3'=> 'vide',
        'datePermis' => '2000-01-01',
        'numCompte' => 0 ,
        'blocage' => 'non'
    ]);
} else {
    // 处理用户不存在的逻辑
}

关键提醒

一定要添加if判断来检查是否获取到了有效的用户ID,否则当请求的邮箱不存在时,会插入null到idClient字段,如果该字段设置为非空约束,会再次触发数据库错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 09:06:05