J'ai 2 champs de base de données
`decval` decimal(5,2)
`intval` int(3)
J'ai 2 requêtes pdo qui les mettent à jour. Celui qui met à jour le int fonctionne bien
$update_intval->bindParam(':intval', $intval, PDO::PARAM_INT);
mais je ne peux pas mettre à jour le champ décimal. J'ai essayé les 3 façons ci-dessous, mais rien ne fonctionne
$update_decval->bindParam(':decval', $decval, PDO::PARAM_STR);
$update_decval->bindParam(':decval', $decval, PDO::PARAM_INT);
$update_decval->bindParam(':decval', $decval);
Il semble que le problème est avec le type de base de données decimal
? Existe-t-il un PDO::PARAM
pour un champ de type decimal
? Si non, que dois-je utiliser comme solution de contournement?
Il n'y a pas de PDO::PARAM
pour les nombres décimaux/flottants, vous devrez utiliser PDO::PARAM_STR
.
UP doit utiliser le même objet PDO :: PARAM_STR, et notez que si la colonne de la base de données est de type NUMERIC (M, D) ou décimale (M, D), le M correspond au nombre de caractères. nombre total de caractères que vous pouvez entrer et D le nombre de décimales. Dans l'exemple NUMERIC (10,2), nous avons 8 maisons à des lieux de précision et deux décimales. Nous avons donc 10 caractères au total, dont 2 réservés pour les décimales.
J'ai trouvé une solution, envoyez le paramètre décimal comme PDO :: PARAM_STR, dans la procédure de stockage sur serveur SQL, recevez-le comme décimal
PHP
$stmt_e->bindParam(':valor_escala_desde', $valor_escala_desde, PDO::PARAM_STR);
SERVEUR SQL, PROCEDURE DE STOCKAGE:
@valor_escala_desde decimal(18,2),
et est fait.