#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 );
Документация: