Laravel 5 Laravel 5.7-使用updateOrInsert()时,查询生成器未正确转义引号或反斜杠

Laravel 5 Laravel 5.7-使用updateOrInsert()时,查询生成器未正确转义引号或反斜杠,laravel-5,insert-update,addslashes,Laravel 5,Insert Update,Addslashes,我有一个数组,值中有一些字符串和特殊字符 如果我使用insert方法,效果很好 $result = DB::connection('host1')->table('tblName')->insert($data); 如果我使用更新方法,效果会很好 $result = DB::connection('host1')->table('tblName')->where('id',$data['id'])->update($data); 但是如果我使用updateOrI

我有一个数组,值中有一些字符串和特殊字符

如果我使用insert方法,效果很好

$result = DB::connection('host1')->table('tblName')->insert($data);
如果我使用更新方法,效果会很好

$result = DB::connection('host1')->table('tblName')->where('id',$data['id'])->update($data);
但是如果我使用updateOrInsert方法,它就不起作用了。这似乎是一个问题

这是我得到的错误:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'No Annual Fee `1` = ?)) as `exists`' at line 1 (SQL: select exists(select * from `tblName` where (`id` = 56429444 No Annual Fee `1` = 56429444)) as `exists`)
当使用SQL存在时,我似乎可以用
addslashes()
解决转义问题。。可能是这个方法的第一个查询

但即使我在数组中循环并转义每个值,它仍然不起作用

foreach ($data as $k=>$v){
   $dt[$k]=addslashes($v);
}

如何使用
updateOrInsert

解决此问题的任何ide函数签名为:

updateOrInsert(array $attributes, array $values = [])
因此,您应该将检查是否存在的
$attributes
数组与
$values
数组分开,如下所示:

$result = DB::connection('host1')->table('tblName')
          ->updateOrInsert(['id'=>$data['id']], $data);

可以显示$data变量的内容吗?有很多键。。有些像
它很简单:$1
,“RawLogoImageUrl”:“\/\/cdn.nex
许多不同的字符串,一些转义的JSON刚刚更新了错误。存在SQL
$result = DB::connection('host1')->table('tblName')
          ->updateOrInsert(['id'=>$data['id']], $data);