包含通配符参数时,Laravel原始表达式不起作用

时间:2017-02-10 00:51:55

标签: php mysql laravel

给出以下代码:

$sql = "SELECT * FROM items WHERE name LIKE '%?%'";
$key = 'orange';
$result = \DB::select(\DB::raw($sql), [$key]);

结果总是没有记录!

通过将LIKE更改为=,它可以正常工作:

$sql = "SELECT * FROM items WHERE name = ?";

我不知道为什么会这样,但我 在此脚本中使用 RAW 。任何人都可以找出问题所在?

1 个答案:

答案 0 :(得分:1)

您无法理解绑定的工作原理...绑定不仅处理值中的引号和其他特殊字符,还处理引用

false

并在绑定之前记下$sql = "SELECT * FROM items WHERE name LIKE ?"; $key = '%orange%'; $result = \DB::select(\DB::raw($sql), [$key]); 值附近的%