У меня есть 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
? Если нет, что я использую в качестве обходного пути?
Нет PDO::PARAM
для десятичных / поплавков, вам придется использовать 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, STORE PROCEDURE:
@valor_escala_desde decimal(18,2),
и делается.