bom dia, estou precisando inserir um array no BD Mysql usando o PDO, esses dados virão via $_POST, o array tem um número de itens que pode variar. A minha dúvida é se devo interar sobre o Array antes de chamar a classe que gravará no BD ou interar sobre o array já nessa classe. Vou usar um exemplo HIPOTÉTICO para facilitar:
persistir.php
public function inserirNomes(){
$nomes = array('joão', 'paulo', 'pedro');
$cargo = "Desenvolvedor"; //esse dado é uma string e não varia para as três linhas do array, ou seja todos sempre serão desenvolvedores.
foreach($nomes AS $nome){
BD::inserir($nome, $cargo);
}
}
DB.php
public static function inserir($nome, $cargo){
$query = "INSERT INTO tb_funcionarios(nome, cargo) VALUES(:nome, :cargo)";
$conexao = Conexao::pegarConexao();
$inserir = $conexao->prepare($query);
$inserir->bindValue(':nome', $nome);
$inserir->bindValue(':cargo', $cargo);
$inserir->execute();
}
outra abordagem:
persistir.php
public function inserirNomes(){
$nomes = array('joão', 'paulo', 'pedro');
$cargo = "Desenvolvedor"; //esse dado é uma string e não varia para as três linhas do array, ou seja todos sempre serão desenvolvedores.
BD::inserir($nomes, $cargo);
}
DB.php
public static function inserir($nomes, $cargo){
$query = "INSERT INTO tb_funcionarios(nome, cargo) VALUES(:nome, :cargo)";
$conexao = Conexao::pegarConexao();
$inserir = $conexao->prepare($query);
foreach($nomes AS $nome){
$inserir->bindValue(':nome', $nome);
$inserir->bindValue(':cargo', $cargo);
$inserir->execute();
}
}
Nas duas abordagens funciona, porém qual delas está de acordo com as boas práticas? se nenhuma delas estiver correta, qual seria melhor?