Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mysql查询中使用,在concat函数中分隔_Mysql_Laravel - Fatal编程技术网

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

在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

使用此查询,我将在表中追加userid,但它将以连续形式插入,我希望以分隔,请建议在查询中进行更改

 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语句中。 您正在使用MySQL
concat
,但该方法没有添加分隔符。 要添加分隔符,请使用(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:update
table\u user\u create\u activity
set
accepted\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:update
table\u user\u create\u activity
set
accepted\u join\u id
=CONCAT(ifnull(accepted\u join\u id,”),其中(
活动\u id
=7))