Построить запрос для ВСТАВКИ нескольких строк

#php #mysql

#php #mysql

Вопрос:

Я хочу INSERT вставить более одной строки MYSQL .

Я пытаюсь построить свой запрос таким образом, в конце мне нужно удалить ЗАПЯТУЮ в конце запроса.

Каков наилучший подход для достижения этой цели (или за меньшее количество строк кода)

 $file_user_group_map_query = "INSERT INTO file_user_groups_map ";

foreach ($user_groups_selected as $file_user_group_map) {
    $file_user_group_map_query .= "VALUES('',$file_id, " . $file_user_group_map . " ), ";
}
  

Комментарии:

1. Используйте функцию implode .

Ответ №1:

Попробуйте это:

 $file_user_group_map_query = "INSERT INTO file_user_groups_map VALUES";

foreach ($user_groups_selected as $file_user_group_map) {
    $insert[] = "('',$file_id, " . $file_user_group_map . " )";
}
$file_user_group_map_query .=   implode(",",$insert);
  

Ответ №2:

 $maps = array_map(function($m) use ($file_id) {
        return $file_id.",".$m; 
    }, $file_user_group_map);
$file_user_group_map_query = 
    'INSERT INTO file_user_groups_map VALUES('.
    implode ( "),('',  $maps ).
    ')';
  

В качестве альтернативы:

 $maps = array_map(function($m) use ($file_id) {
        return "($file_id,$m)"; 
    }, $file_user_group_map);
$file_user_group_map_query =
    'INSERT INTO file_user_groups_map VALUES '. 
    implode ( ",'',  $maps );
  

Документация: