Formatacao moeda

Bom dia. A partir de um campo formatado para moeda (maskmoney) estou tentando fazer a inserção no BD mas não estou conseguindo. Alguém poderia dar uma luz:

produto-formulario

<div class="form-group">
        <label>Preço:</label>     
            <input type="text" name="preco" id="currency" class="form-control"  
               data-thousands="." data-decimal="," data-prefix="R$ "  
               value="<?=$produto->getPreco() ?>" required>

adiciona-produto

$produto = new Produto();
$produto->setCodigo($_POST["codigo"]) ;
$produto->setReferencia($_POST["referencia"]);
$produto->setNome($_POST["nome"]);
$produto->setPreco($_POST["preco"]);

produtoDAO

function insereProduto($produto) {
$query = "insert into produtos (codigo, referencia, nome, preco, peso, medida, ncm, descricao, marca_id, categoria_id, destaque) values ({$produto->getCodigo()}, '{$produto->getReferencia()}', '{$produto->getNome()}', {$produto->getPreco()}, {$produto->getPeso()}, '{$produto->getMedida()}', {$produto->getNcm()}, '{$produto->getDescricao()}', {$produto->getMarca()}, {$produto->getCategoria()}, {$produto->getDestaque()})";
return mysqli_query($this->conexao, $query);
}

Boa pessoal, o professor Wanderson Macedo me ajudou a solucionar este problema.

Vamos lá

O maskmoney alterou o campo para inclusão do preço formatado com R$ e virgula antes das duas casas decimais. Perfeito.

Na hora de fazer a gravação no BD, o valor que está com R$ e mais a virgula das duas casas decimais (padrão moeda brasileiro) precisa ser convertido novamente.

Segue solução a ser aplicada no setPreco (na classe Produto). Desta forma o BD reconhece o valor e implementa corretamente.

public function setPreco($preco){
if(!is_numeric($preco)){
$preco_convertido = str_replace(“R$ “, “”, $preco);
$preco_convertido = str_replace(”.”, “”, $preco_convertido);
$preco_convertido = (float) str_replace(",", “.”, $preco_convertido);
$this->preco = $preco_convertido;
}else {
$this->preco = $preco;
}
}