将字符串转换为十进制或浮点,并使用PHP写入MySQL数据库



我需要帮助使用PHP在MysqlDB中编写信息。我有一个存储任何值的字符串,例如1.279,35,我需要将其转换为浮点或十进制(10.2(;str_ replace";将逗号转换为点,但不起作用。谢谢

<?php
include_once "conexao.php";
$dados = filter_input_array(INPUT_POST, FILTER_DEFAULT);
if (empty($dados['descricao'])) {
$retorna = ['erro' => true, 'msg' => "<div class='alert alert-danger' role='alert'>Erro, é necessário preencher o campo descricao.</div>"];
} elseif (empty($dados['valor'])) {
$retorna = ['erro' => true, 'msg' => "<div class='alert alert-danger' role='alert'>Erro, é necessário preencher o campo valor.</div>"];
} else {
$valtemp = $dados['valor']);
$valtemp = str_replace(".", "", $valtemp);
$valtemp = str_replace(",", ".", $valtemp);
$dados['valor']) = $valtemp;
$query_peca = "INSERT INTO pecas 
(descricao, modelo, nserie, fornecedor, 
datacompra, valor, condicao, observacao) 
VALUES (:descricao, :modelo, :nserie, :fornecedor, 
:datacompra, :valor, :condicao, :observacao)";
$cad_peca = $conn->prepare($query_peca);
$cad_peca->bindParam(':descricao', $dados['descricao']);
$cad_peca->bindParam(':modelo', $dados['modelo']);
$cad_peca->bindParam(':nserie', $dados['nserie']);
$cad_peca->bindParam(':fornecedor', $dados['fornecedor']);
$cad_peca->bindParam(':datacompra', $dados['datacompra']);
$cad_peca->bindParam(':valor', $dados['valor']);    
$cad_peca->bindParam(':condicao', $dados['condicao']);
$cad_peca->bindParam(':observacao', $dados['observacao']);
$cad_peca->execute();   
if ($cad_peca->rowCount()) {
$retorna = ['erro' => false, 'msg' => "<div class='alert alert-success' role='alert'>Peça cadastrada com sucesso.</div>"];
} else {
$retorna = ['erro' => true, 'msg' => "<div class='alert alert-danger' role='alert'>Erro: peça não cadastrada.</div>"];
}
}
echo json_encode($retorna);

我在DB中保存货币值时遇到了类似的问题,并使用了floatval((,如下所示。

$valtemp = "1.279,35";
echo floatval(str_replace(',', '.', str_replace('.', '', $valtemp)));

最新更新