Laravel 在 PHP 一般错误:1366 Incorrect integer value
Posted
技术标签:
【中文标题】Laravel 在 PHP 一般错误:1366 Incorrect integer value【英文标题】:Laravel in PHP General error: 1366 Incorrect integer value 【发布时间】:2018-06-01 15:53:09 【问题描述】: $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]' for column 'idClient' at row 1 (SQL: insert into
client
(idClient
, @987654324 @,numPermis
,quest1
,quest2
,quest3
,datePermis
,numCompte
,blocage
) 值 (["idUtlstr":25], 0, 0, vide, vide, vide, 2000-01-01, 0, 非))
【问题讨论】:
看起来错误消息准确地显示了哪个 col 不是整数...您的问题是什么? 当我尝试将 $id 中的内容放入我的列 'idClient' ii 收到此错误时,我不明白如何从保存的 (idUtlstr) 中获取值 25在 $id 这是一个简单的对象数组。请参阅下面的@flash Thunder 的回答 这是我第一次做这个...thanx man 【参考方案1】:这是因为$id
在您的数据库请求之后不是整数。您的查询返回一个元素集合对象,您需要正确获取它...
执行var_dump($id)
,你会看到它返回stdClass
。
在查询后使用:
$my_id = $id0->idUtlstr
并在第二个查询中使用该变量。
【讨论】:
所以任何执行查询的结果都是一个从中获取数据的数组,我将它视为一个数组对象!谢谢你救了我 如果数据库没有记录会怎样?? @aymenmedjader myid 将为空,第二个查询将不返回任何内容,但不应失败【参考方案2】:试试看
$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);
【讨论】:
这仍然不正确。$id
仍将是一个对象数组并引发相同的错误。此外,答案应附有解释,而不仅仅是代码转储
但 $id 是一个数组,我无法将其放入 diracty 列中,因此我需要指出我想要获取的内容 ..thanx man check @flash answer 这是正确的
我使用 ->first() 方法而不是 ->get()。这个代码也是正确的@aymenmedjader
当你使用 get() 时它返回 Collection 实例,当它第一次返回单个数据时【参考方案3】:
使用这个,我希望它会起作用。
$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'
]
);
【讨论】:
【参考方案4】:这是因为$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'
]
);
【讨论】:
以上是关于Laravel 在 PHP 一般错误:1366 Incorrect integer value的主要内容,如果未能解决你的问题,请参考以下文章
SQLSTATE[HY000]:一般错误:1366 整数值不正确:
think PHP6 保存到数据库的时候出现:SQL错误(1366):Incorrect String Value
如何修复 laravel 中的 gettallheaders.php 错误?