在MySQL查询中的concat函数中使用,分隔

时间:2019-07-11 10:24:42

标签: mysql laravel

使用此查询,我将在表中附加用户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.')')]);

3 个答案:

答案 0 :(得分:0)

问题出在您的DB::raw SQL语句中。 您正在使用MySQL concat,但该方法未添加分隔符。 要添加分隔符,请使用concat_ws(ws =带分隔符),然后第一个参数是您的分隔符。

->update(['accepted_join_id'=>DB::raw("CONCAT_WS(',', ifnull(accepted_join_id,''),".$get_user_id.')')])

旁注,由于在$get_user_id中添加了DB::raw,因此您的查询已打开以进行sql注入。要关闭sql注入,请将其更改为以下内容。

->update(['accepted_join_id'=>DB::raw("CONCAT_WS(',', ifnull(accepted_join_id,''),?)", [$get_user_id])])

这样,我们先将用户ID逸出,然后再将其添加到查询中。

答案 1 :(得分:0)

希望这可以解决您的问题

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)")
    ]);

答案 2 :(得分:0)

DB :: table('table_user_create_activity')->其中([''activity_id'=> $ query_get_activity-> activity_id])->更新(['accepted_join_id'=> DB :: raw('CONCAT(ifnull(NULL ,accepted_join_id),'。$ get_user_id。')')]));