我创建了一个get请求函数,该函数从URL http://localhost/user/list?id=1
获取ID。现在,根据测试,即使它具有http://localhost/user/list?id=1DFasdf
之类的字符,它也会检索列1的数据值。由于对此是新手,所以我对此感到有些困惑:
public function lists(Request $request)
{
// $id value is 1 or 1DFasdf
$id = $request->id;
dd($this->roomList->where('id', $id)->get());
}
因此,当我显示带有或不带有哑字符的结果时,它将检索列1的数据,但是如果我首先使用其他id(db中不存在)或字符,则它将按预期工作。我该如何防止这种情况发生?
答案 0 :(得分:1)
MySQL认为该值是字段类型的整数,例如是整数
如果id = 2并且您输入id =“ 2test”,则输出将是数据库中的id匹配项, 但是如果您输入id =“ test2”,则它将不会返回任何内容。
您还可以在MySQL查询中检查相同的内容。
如果您需要完全匹配,则首先需要在laravel中将该字段强制转换为char。
$this->roomList->whereRaw("CAST(id AS CHAR(12))", $id)->get()
答案 1 :(得分:1)
您应该阅读有关杂耍类型的信息:-
public function lists(Request $request)
{
// $id value is 1 or 1DFasdf
$id = $request->id;
dd($this->roomList->where('id','like', $id)->get());
}