PDO :: PARAM для типа десятичный? - PullRequest
70 голосов
/ 27 апреля 2010

У меня есть 2 поля базы данных

`decval` decimal(5,2)
`intval` int(3)

У меня есть 2 запроса pdo, которые их обновляют. Тот, который обновляет int, работает нормально

$update_intval->bindParam(':intval', $intval, PDO::PARAM_INT);

но я не могу обновить десятичное поле. Я пробовал 3 способа ниже, но ничего не работает

$update_decval->bindParam(':decval', $decval, PDO::PARAM_STR);
$update_decval->bindParam(':decval', $decval, PDO::PARAM_INT);
$update_decval->bindParam(':decval', $decval);

Кажется, проблема в типе базы данных decimal? Есть ли PDO::PARAM для поля типа decimal? Если нет, что я могу использовать в качестве обходного пути?

Ответы [ 3 ]

75 голосов
/ 27 апреля 2010

Для десятичных чисел / значений с плавающей запятой PDO::PARAM не существует, вам придется использовать PDO::PARAM_STR.

0 голосов
/ 30 сентября 2015

Я нашел решение, отправьте десятичный параметр, например, PDO :: PARAM_STR, в процедуре хранилища сервера sql получите его как десятичное (int, dec)

PHP

$stmt_e->bindParam(':valor_escala_desde', $valor_escala_desde, PDO::PARAM_STR);

SQL SERVER, ПРОЦЕДУРА ХРАНЕНИЯ:

@valor_escala_desde decimal(18,2),

и готово.

0 голосов
/ 06 августа 2013

UP должен использовать то же PDO :: PARAM_STR, и следует отметить, что если столбец в базе данных имеет тип NUMERIC (M, D) или десятичный (M, D), следует учитывать, что M - это точность количества символов должно быть общее количество символов, которое вы можете ввести, и D количество десятичных знаков. В примере NUMERIC (10,2) мы имеем 8 домов с точностью до десятых и два знака после запятой. Таким образом, у нас всего 10 символов, 2 из которых зарезервированы для десятичных знаков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...