Подтвердить что ты не робот

PDO:: PARAM для типа decimal?

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

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

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

$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? Если нет, что я использую в качестве обходного пути?

4b9b3361

Ответ 1

Нет никаких PDO::PARAM для запятых /float, вам нужно будет использовать PDO::PARAM_STR.

Ответ 2

Я выяснил, что ищет способ хранения DOULBE с использованием PDO, что если вы не предоставите третий аргумент (например, PDO:: PARAM_ *), он использует магию и правильно сохраняет номер. Так что, возможно, если вы просто покинули PDO, чтобы беспокоиться о типе параметра и весело связывать: decval с $decval и прыгать вместе со следующей задачей: -))

Ответ 3

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

Ответ 4

Я нашел решение, отправлю десятичный параметр, такой как 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),

и выполняется.