PDO:: PARAM для типа decimal?
у меня есть 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
? Если нет, то что я использую в качестве обходного пути?
4 ответа:
Я узнал, ища способ хранения DOULBEs с помощью PDO, что если вы не предоставляете третий аргумент (т. е. PDO::PARAM_*), он использует какую-то магию и сохраняет число правильно. Так что, возможно, если вы просто оставили PDO, чтобы беспокоиться о типе параметра и весело привязать: decval к $decval и перейти к следующей задаче : -))
UP должен использовать PDO:: PARAM_STR то же самое, и отмечая, что если столбец в базе данных имеет тип NUMERIC (M, D) или decimal (M, D), следует отметить, что M-это количество символов, точность должна быть общим количеством символов, которые вы можете ввести, и D-количество десятичных знаков. В Примере NUMERIC (10,2) мы имеем 8 домов до мест точности и два десятичных знака. Таким образом, у нас есть 10 символов в общей сложности с 2 зарезервированы для десятичных знаков.
Я нашел решение, отправьте десятичный параметр, например PDO:: PARAM_STR, в процедуре хранилища sql server получите его как decimal (int,dec)
PHP
$stmt_e->bindParam(':valor_escala_desde', $valor_escala_desde, PDO::PARAM_STR);
SQL SERVER, ПРОЦЕДУРА ХРАНЕНИЯ:
@valor_escala_desde decimal(18,2),
и делается.