web-dev-qa-db-fra.com

PDO :: PARAM pour le type décimal?

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?

68
dmontain

Il n'y a pas de PDO::PARAM pour les nombres décimaux/flottants, vous devrez utiliser PDO::PARAM_STR.

74
Alix Axel

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.

0
Gil

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.

0
julio castillo