laravel Eloquent/QueryBuilder - 为什么变量$prod 的值变成"?"在 Sql 查询中?
laravel Eloquent/QueryBuilder - Why the value of variable $prod is become"?" in the Sql query?
对不起我的英语语法,..
我想执行此查询,但得到 0 个结果,..
我尝试检查 ->toSql() 函数,我看到值变成了?,。而不是值 "pork"。
为什么变成(?)问号?以及如何修复它?
这是我的 laravel 使用模型
查询
$items = Item::where("item_type_id", "!=", 1)
->where(function ($query) use ($prod){
$query->where("description", "like", "'%$prod%'")
->orWhere("id", "'%$prod%'");
})
->toSql();
dd($items);
结果是这样,参数变成“?”。
"select * from `items` where `item_type_id` !=
? and (`description` like
?or `id` =
?)"
// Your code is Wrong. Please try this code
$query = $request->input('query');
$items = Item::where('description','LIKE',"%$query%",)->get();
? 它调用绑定用于 SQL 注入。如果你想获取绑定变量,那么你可以使用 getBindings()
方法。
的更多详细信息
$items = Item::where("item_type_id", "!=", 1)
->where(function ($query) use ($prod){
$query->where("description", "like", "'%$prod%'")
->orWhere("id", "'%$prod%'");
});
$sqlquery = $items->toSql();
$bindings = $items->getBindings();
另一种将 ? 替换为值的方法如下。
$sql_with_bindings = str_replace_array('?', $items->getBindings(), $items->toSql());
检查最后执行的查询的另一种方法是 DB::enableQueryLog()
。
\DB::enableQueryLog();
$items = Item::where("item_type_id", "!=", 1)
->where(function ($query) use ($prod){
$query->where("description", "like", "'%$prod%'")
->orWhere("id", "'%$prod%'");
})->get();
dd(\DB::getQueryLog());
对不起我的英语语法,..
我想执行此查询,但得到 0 个结果,.. 我尝试检查 ->toSql() 函数,我看到值变成了?,。而不是值 "pork"。 为什么变成(?)问号?以及如何修复它?
这是我的 laravel 使用模型
查询$items = Item::where("item_type_id", "!=", 1)
->where(function ($query) use ($prod){
$query->where("description", "like", "'%$prod%'")
->orWhere("id", "'%$prod%'");
})
->toSql();
dd($items);
结果是这样,参数变成“?”。
"select * from `items` where `item_type_id` !=
? and (`description` like
?or `id` =
?)"
// Your code is Wrong. Please try this code
$query = $request->input('query');
$items = Item::where('description','LIKE',"%$query%",)->get();
? 它调用绑定用于 SQL 注入。如果你想获取绑定变量,那么你可以使用 getBindings()
方法。
$items = Item::where("item_type_id", "!=", 1)
->where(function ($query) use ($prod){
$query->where("description", "like", "'%$prod%'")
->orWhere("id", "'%$prod%'");
});
$sqlquery = $items->toSql();
$bindings = $items->getBindings();
另一种将 ? 替换为值的方法如下。
$sql_with_bindings = str_replace_array('?', $items->getBindings(), $items->toSql());
检查最后执行的查询的另一种方法是 DB::enableQueryLog()
。
\DB::enableQueryLog();
$items = Item::where("item_type_id", "!=", 1)
->where(function ($query) use ($prod){
$query->where("description", "like", "'%$prod%'")
->orWhere("id", "'%$prod%'");
})->get();
dd(\DB::getQueryLog());