Cómo insertar múltiples filas usando instrucciones preparadas

Yo uso una declaración de inserción muy simple

INSERT INTO table (col1, col2, col3) VALUES (1,2,3), (4,5,6), (7,8,9), ...

Actualmente, la parte de la consulta que contiene los valores que se insertarán es una cadena separada construida en un bucle.

¿Cómo puedo insertar varias filas usando una declaración preparada?

editar: Encontré este pedazo de código. Sin embargo, esto ejecuta una consulta separada para cada fila. Eso no es lo que estoy buscando.

$stmt =  $mysqli->stmt_init();
if ($stmt->prepare("INSERT INTO table (col1, col2, col3) VALUES (?,?,?)")){ 
    $stmt->bind_param('iii', $_val1, $_val2, $_val3);
    foreach( $insertedata as $data ){
        $_val1 = $data['val1'];
        $_val2 = $data['val2'];
        $_val3 = $data['val3'];
        $stmt->execute();
    }
}

editar # 2: Mis valores provienen de una matriz multidimensional de longitud variable.

$values = array( array(1,2,3), array(4,5,6), array(7,8,9), ... );

Respuestas a la pregunta(1)

Su respuesta a la pregunta