给出以下代码:
$sql = "SELECT * FROM items WHERE name LIKE '%?%'";
$key = 'orange';
$result = \DB::select(\DB::raw($sql), [$key]);
结果总是没有记录!
通过将LIKE
更改为=
,它可以正常工作:
$sql = "SELECT * FROM items WHERE name = ?";
我不知道为什么会这样,但我 在此脚本中使用 RAW 。任何人都可以找出问题所在?
答案 0 :(得分:1)
您无法理解绑定的工作原理...绑定不仅处理值中的引号和其他特殊字符,还处理引用
false
并在绑定之前记下$sql = "SELECT * FROM items WHERE name LIKE ?";
$key = '%orange%';
$result = \DB::select(\DB::raw($sql), [$key]);
值附近的%