PHP中的Laravel一般错误:1366不正确的整数值

时间:2018-06-01 15:53:09

标签: php laravel

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

    DB::table('client')->insert(
        [
            'idClient' => $id, 
            'nbrSignl' => 0,
            'numPermis' => 0, 
            'quest1' => 'vide',
            'quest2' => 'vide',
            'quest3'=> 'vide',
            'datePermis' => '2000-01-01',
            'numCompte' => 0 ,
            'blocage' => 'non' 
        ]
    );
  

SQLSTATE [HY000]:常规错误:1366不正确的整数值:' [{" idUtlstr":25}]'对于列' idClient'在第1行(SQL:插入clientidClientnbrSignlnumPermisquest1quest2quest3datePermisnumCompteblocage)值([{" idUtlstr":25}],0,0,vide,vide,vide,2000-01-01 ,0,非))

4 个答案:

答案 0 :(得分:2)

这是因为$id在数据库请求之后不是整数。您的查询返回一个元素集合的对象,您需要正确地获取它...

执行var_dump($id),您会看到它返回stdClass

查询后使用此内容:

$my_id = $id{0}->idUtlstr

在第二个查询中使用该变量。

答案 1 :(得分:1)

试试吧

$utilisateur = DB::table('utilisateur')
    ->select('idUtlstr')
    ->where('email',$request->input("email"))
    ->first();
if (!empty($utilisateur)) {
   $id = $utilisateur->idUtlstr;  
   $data = [
      'idClient' => $id, 
      'nbrSignl' => 0,
      'numPermis' => 0, 
      'quest1' => 'vide',
      'quest2' => 'vide',
      'quest3'=> 'vide',
      'datePermis' => '2000-01-01',
      'numCompte' => 0 ,
      'blocage' => 'non' 
   ];
   DB::table('client')->insert($data);
}

答案 2 :(得分:0)

使用这个,我希望它能起作用。

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

        DB::table('client')->insert(
            [
                'idClient' => $id->idUtlstr, 
                'nbrSignl' => 0,
                'numPermis' => 0, 
                'quest1' => 'vide',
                'quest2' => 'vide',
                'quest3'=> 'vide',
                'datePermis' => '2000-01-01',
                'numCompte' => 0 ,
                'blocage' => 'non' 
            ]
        );

答案 3 :(得分:0)

这是因为$id整数,并且查询返回了对象。例如,在您的数据库中,$id的值等于2,但是查询返回的值为'{"id":2}'而不是2

您应该做的是添加第二个变量以获取ID:

$myid = $id->id

这等于$myid = 2。然后,您可以使用$myid进行第二次查询,一切都会正常进行。

根据您的代码,这应该可以工作:

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

DB::table('client')->insert(
    [
        'idClient' => $myid, 
        'nbrSignl' => 0,
        'numPermis' => 0, 
        'quest1' => 'vide',
        'quest2' => 'vide',
        'quest3'=> 'vide',
        'datePermis' => '2000-01-01',
        'numCompte' => 0 ,
        'blocage' => 'non' 
    ]
);