user3709682
user3709682

Reputation:

Build query to INSERT multiple rows

I want to INSERT more than one rows into MYSQL.

I am trying to build my query in this way, In the end I have to remove the COMMA in the end of query.

WHat is the better approach to achieve this(or in less lines of code)

$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 . " ), ";
}

Upvotes: 0

Views: 43

Answers (2)

didierc
didierc

Reputation: 14730

$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 ).
    ')';

Alternatively:

$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 );

Documentation:

Upvotes: 1

no_juan
no_juan

Reputation: 67

Try this:

$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);

Upvotes: 1

Related Questions