php Laravel数据库查询特殊字符

ffx8fchx  于 2023-09-29  发布在  PHP
关注(0)|答案(1)|浏览(125)

我试图用Eloquent构建一个查询,输入有UTF-8字符。查询的相关部分是data,如'%comuna":VALPARAÍSO" %',数据库中存储的字符串是**,“comuna”:“VALPARA\u00cdSO”,。没有结果。
我尝试使用json_encode($query)来实现,它会生成
data,如'%comuna":\“VALPARA\u00cdSO" %'**,但同样没有成功。
如果查询没有特殊字符,则按预期工作。
从这里编辑
查询类似于:

$query = '"comuna":"VALPARAÍSO"';
$invoice = Invoice::where('data', 'like', '%'.$query.'%')->get();

生成的原始查询是

select * from `invoices` where `data` like '%\"comuna\":\"VALPARAÍSO\"%' and `invoices`.`deleted_at` is null

要匹配的列包含以下内容:

(...) itas","comuna":"VALPARA\u00cdSO","fon (...)

我应该如何编码查询以匹配列内容?

nle07wnf

nle07wnf1#

我终于能够解决它。
代码如下所示:

$query = 'comuna":'. json_encode('VALPARAÍSO');
$query = addslashes($query);

$invoice = Invoice::where('data', 'like', '%'.$query.'%')->get();

并且生成的查询导致:

select * from `invoices` where `data` like 
'%comuna\\":\\"VALPARA\\u00cdSO\\"%' and `invoices`.`deleted_at` is null

我认为诀窍是双重转义unicode字符。
谢谢你的回答。

相关问题