Erro desconhecido no PDO

,

Bom, estou salvando os dados de um array em um db, porem somente os valores numero estao com erros, eles sao salvo no db como 0, nao assumem o valor que eu faço no insert!

    try {
            $stmt = $pdo->prepare("INSERT INTO T_TIME (TIME_SHIELD, TIME_NAME, TIME_VITORIA, TIME_EMPATE, TIME_DERROTA, TIME_PNTSFEITO, TIME_PNTSSOFRIDO, TIME_SDPNTS, TIME_CTG, TIME_SUBCTG) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
            $stmt->bindParam(1, $img, PDO::PARAM_STR);
            $stmt->bindParam(2, $arr['nome'], PDO::PARAM_STR);
            $stmt->bindParam(3, $arr['vitoria'], PDO::PARAM_INT);
            $stmt->bindParam(4, $zero, PDO::PARAM_INT);
            $stmt->bindParam(5, $arr['derrota'], PDO::PARAM_INT);
            $stmt->bindParam(6, $arr['pf'], PDO::PARAM_INT);
            $stmt->bindParam(7, $arr['pc'], PDO::PARAM_INT);
            $stmt->bindParam(8, $arr['saldo'], PDO::PARAM_INT);
            $stmt->bindParam(9, $ctg, PDO::PARAM_STR);
            $stmt->bindParam(10, $sub, PDO::PARAM_STR);
 
            if ($stmt->execute()) {
                echo 'Dados inseridos com sucesso</br>';
            } else {
                echo 'Erro ao inserir os dados</br>';
            }
            $erro = false;
        } catch (PDOException $e) {
            echo $e->getMessage();
            $erro = true;
        }

Nenhum erro é desconhecido, pode passar desapercebido ou ocultado :joy:

Algumas questões?

Na base qual tipo dos campos que recebem números (int, numeric, float, decimal)?

Os números que você quer passar são de que tipo, você disse ao PDO que são int (PDO::PARAM_INT), mas por exemplo o campo saldo parece ser float certo?

Nesse caso qual sentido de passar INT para o PDO? Isso acaba “truncando” o valor, onde acabará entrando na base apenas a parte inteira do número (o que vem antes do ponto)…, para esses casos você deve definí-los como PARAM_STR infelizmente…

Dica: quando não define o tipo no terceiro parâmetro do bindParam ou bindValue, o padrão é PDO::PARAM_STR, logo para o que você precisa é desnecessário declará-los…

1 curtida