Ответ 1
Нет никаких PDO::PARAM
для запятых /float, вам нужно будет использовать PDO::PARAM_STR
.
У меня есть 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
? Если нет, что я использую в качестве обходного пути?
Нет никаких PDO::PARAM
для запятых /float, вам нужно будет использовать PDO::PARAM_STR
.
Я выяснил, что ищет способ хранения DOULBE с использованием PDO, что если вы не предоставите третий аргумент (например, PDO:: PARAM_ *), он использует магию и правильно сохраняет номер. Так что, возможно, если вы просто покинули PDO, чтобы беспокоиться о типе параметра и весело связывать: decval с $decval и прыгать вместе со следующей задачей: -))
UP должен использовать тот же PDO:: PARAM_STR и отмечая, что если столбец в базе данных имеет тип NUMERIC (M, D) или десятичный (M, D), следует заметить, что M - это число символов должно быть общее количество символов, которые вы можете ввести, а D - количество знаков после запятой. В примере NUMERIC (10,2) у нас есть 8 домов с точками точности и двумя знаками после запятой. Таким образом, у нас есть всего 10 символов с 2 зарезервированными для десятичных знаков.
Я нашел решение, отправлю десятичный параметр, такой как 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),
и выполняется.