Nếu bạn đang làm điều này:
- Tạo hoặc tải một đối tượng
$o
. - Chỉ định
'12345'
vào thuộc tính / cột được đề cập. - Lưu
$o
và để MySQL cắt ngắn giá trị thành'1234'
. - Truy cập thuộc tính / cột trong
$o
và nhận'12345'
quay lại.
thì bạn đang gặp một trong những vấn đề khi để cơ sở dữ liệu âm thầm xử lý dữ liệu của bạn.
Lưu thành công, đối tượng của bạn không biết rằng MySQL đã cắt bớt dữ liệu nên nó vẫn giữ nguyên '12345'
thay vì tải lại cột đó từ cơ sở dữ liệu và bạn có dữ liệu không nhất quán trong tay.
Nếu bạn đang phụ thuộc vào MySQL âm thầm cắt bớt dữ liệu của mình thì có thể bạn sẽ phải làm điều này:
- Tạo / tải đối tượng của bạn.
- Đã cập nhật các thuộc tính.
- Lưu đối tượng.
- Bỏ tham chiếu cục bộ của bạn cho đối tượng.
- Tải nó mới từ cơ sở dữ liệu để đảm bảo bạn nhận được thực tế giá trị.
Tôi khuyên bạn nên thêm các xác thực nghiêm ngặt vào các đối tượng của mình để tránh bị cắt ngắn bên trong MySQL. Đang bật chế độ nghiêm ngặt cũng sẽ tránh được vấn đề này nhưng sau đó bạn cần phải xem xét và thắt chặt tất cả việc xử lý lỗi và xác thực dữ liệu của mình (điều này thực sự sẽ không phải là một điều xấu).