如果我尝试WHERE email = ?
,它可以工作,但如果我尝试下面的代码,它不会。有什么想法吗?谢谢。
DB::connection('operator')->select("SELECT * FROM users WHERE email LIKE '%?%'", array('test'));
这就是getQueryLog()
的样子。
array(3) {
["query"]=>
string(213) "SELECT * FROM users WHERE email LIKE '%?%'"
["bindings"]=>
array(1) {
[0]=>
string(1) "test"
}
["time"]=>
float(1.45)
}
发布于 2015-01-09 23:36:23
您必须将%
放入绑定数组中:
DB::connection('operator')
->select("SELECT * FROM users WHERE email LIKE ?", array('%test%'));
而且,只使用Laravel的Eloquent ORM或Query Builder要容易得多
例如,这是使用查询构建器时的样子:
DB::connection('operator')->table('users')->where('email', 'LIKE', '%test%')->get();
使用用户提供的字符串时,请记住以转义任何%
!如下所示:
$escapedInput = str_replace('%', '\\%', $input);
发布于 2019-09-11 02:17:47
它非常适合我在laravel 5.7上使用,如下所示:
$name = "the value that you want to find in the column";
Model::where("field", "LIKE", "\\" . $name . "%")->get()
$name
是要在与"%“连接的列中查找的字符串的一部分
"field"
是您可以输入"%“而不是"\”的列的字段(%所有字符)
$TheResult = MyModel::where("myFieldOfMyModel", "like", "%" . $name . "%")->get();
它在laravel 5.7上非常适合我
谢谢
发布于 2017-02-21 23:54:23
只要转义你的变量就行了:
$name = "_";
Model::where("field", "LIKE", "\\" . $name . "%")->get()
希望这对某些人有帮助。
https://stackoverflow.com/questions/27863956
复制相似问题