PHP 7.3 Laravel 데이터베이스 자동 번호 반올림 오류
원인을 찾을 수 없는 이상한 오류: 데이터베이스에 저장할 때 10진수가 자동으로 반올림됩니다. PHP 7.3을 사용할 때만.PHP 7.1을 사용할 때는 문제가 발생하지 않습니다(whm의 multi php manager를 사용하여 두 버전을 전환하고 있습니다).
10.1.39-MariaDB Laravel 5.5, 웅변을 사용하여 다음을 수행하여 시험.
$model->num=1.23;
$model->save();
php 7.1, 값을 사용하면 잘 작동합니다.1.23
데이터베이스에 정확하게 저장했지만, php 7.3을 사용하면 값이 반올림됩니다.1.00
.
laravel의 query builder가 보낸 실제 SQL이 두 경우 모두 정확하다는 것을 알 수 있습니다.UPDATE x SET num=1.23 WHERE id=x
따라서 쿼리 작성기와 실제 실행 사이의 어딘가에서 값이 반올림됩니다.
라라벨을 사용하지 않고 순수 pph 테스트도 작성하였습니다.mysqli_query("UPDATE ...")
그리고 이것은 두가지 php 버전 모두에서 올바르게 작동하기 때문에 문제가 라라벨 데이터베이스 패키지의 비호환성에 있을 것이라고 생각합니다.
여기서 어디로 가야 할지 잘 모르겠습니다. 조언해 주실 분 계신가요?
미리 감사드립니다.
갱신하다
php 7.3에서 문자열을 먼저 지정하면 db에 저장된 값이 올바르게 표시됩니다.
$model->num= (string)1.23;
$model->save();
저는 별로 하고 싶지 않아요. 많은 곳에서 해야 할 것이기 때문에...여전히 원인을 조사 중입니다.
사용하다number_format($value, 2)
꼭 될 겁니다.
세부 형식은 다음과 같습니다.number_format($value, 2, '.', '');
언급URL : https://stackoverflow.com/questions/59024794/php-7-3-laravel-database-auto-number-rounding-error
'programing' 카테고리의 다른 글
Oracle PL/SQL 개발자를 사용하여 테스트 데이터 생성 (0) | 2023.10.13 |
---|---|
Oracle sqlldr 타임스탬프 형식 두통 (0) | 2023.10.13 |
경고 NETSDK1071 'Microsoft'에 대한 패키지 참조.AspNetCore.'앱'은 '2.1.6' 버전을 지정했습니다. (0) | 2023.10.13 |
지정된 값이 열에 있는 행에서 여러 개의 서로 다른 값을 가져오는 Mysqlike (0) | 2023.10.13 |
"inline" 키워드 vs "인라이닝" 개념 (0) | 2023.10.13 |