在mysql查询中使用,在concat函数中分隔
使用此查询,我将在表中追加userid,但它将以连续形式插入,我希望以分隔,请建议在查询中进行更改在mysql查询中使用,在concat函数中分隔,mysql,laravel,Mysql,Laravel,使用此查询,我将在表中追加userid,但它将以连续形式插入,我希望以分隔,请建议在查询中进行更改 DB::table('table_user_create_activity') ->where(['activity_id'=>$query_get_activity->activity_id]) ->update(['accepted_join_id'=>DB::raw('CONCAT(ifnull(acc
DB::table('table_user_create_activity')
->where(['activity_id'=>$query_get_activity->activity_id])
->update(['accepted_join_id'=>DB::raw('CONCAT(ifnull(accepted_join_id,""),'.$get_user_id.')')]);
问题出在
DB::raw
SQL语句中。
您正在使用MySQLconcat
,但该方法没有添加分隔符。
要添加分隔符,请使用(ws=with separator),然后第一个参数是分隔符
->update(['accepted_join_id'=>DB::raw("CONCAT_WS(',', ifnull(accepted_join_id,''),".$get_user_id.')')])
旁注,由于在DB::raw
中添加了$get\u user\u id
,因此您的查询对sql注入是开放的。要关闭sql注入,请将其更改为以下内容
->update(['accepted_join_id'=>DB::raw("CONCAT_WS(',', ifnull(accepted_join_id,''),?)", [$get_user_id])])
这样,在将用户id添加到查询中之前,我们将其转义。希望这能解决您的问题
DB::table('table_user_create_activity')
->where([ 'activity_id' => $query_get_activity->activity_id ])
->update([
'accepted_join_id' => DB::raw("CONCAT(ifnull(accepted_join_id,''), ',' , $get_user_id)")
]);
DB::table('table_user_create_activity')->其中(['activity_id'=>$query_get_activity->activity_id])->更新(['accepted_join_id'=>DB::raw('CONCAT(ifnull(NULL,accepted_join_id))) 请把问题说清楚,具体步骤是什么?此外,一些示例数据将有助于了解您来自何处以及目标是什么。谢谢@frankfurt laravel实际上我想在表列中添加值,如1,2,3,但我的查询将存储为123 plz建议在查询中进行更改。“我将在表中添加用户ID,但它将以连续方式插入,我想用“Good read SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MariaDB服务器版本对应的手册,以了解在第1行的“where(
activity\u id
=?)”附近使用的正确语法(SQL:updatetable\u user\u create\u activity
setaccepted\u join\u id
=CONCAT\u WS(where(activity\u id
=7))顺便说一句,您的查询是为sql注入打开的,因为$get\u user\u id
没有转义。您好,但它是这样保存的,2,2我希望像2,2一样保存。当列包含空值时,它首先保存,然后像2,2一样保存值,尝试删除ifnull
检查,因为concat\u ws
忽略空值。SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;请查看与您的MariaDB服务器版本相对应的手册,以了解在第1行的“where(activity\u id
=?)”附近使用的正确语法(SQL:updatetable\u user\u create\u activity
setaccepted\u join\u id
=CONCAT(ifnull(accepted\u join\u id,”),其中(活动\u id
=7))